/*
* Copyright (c) 2005-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:
*
*/
/**
@file
*/
#include "performancetest.h"
#include "t_input.h"
#include "tvectorutils.h"
_LIT8(KPerformanceTestStart, "<KPerformanceTesting>");
_LIT8(KPerformanceTestEnd, "</KPerformanceTesting>");
/*static*/ CPerformance* CPerformance::iPerformanceTester = NULL;
/*static*/ CPerformance* CPerformance::NewL()
{
if (!iPerformanceTester)
{
iPerformanceTester = new (ELeave) CPerformance();
}
return (iPerformanceTester);
}
/*static*/ CPerformance* CPerformance::PerformanceTester()
{
ASSERT(iPerformanceTester);
return (iPerformanceTester);
}
/*static*/ void CPerformance::ClosePerformanceTester()
{
delete iPerformanceTester;
iPerformanceTester = NULL;
}
CPerformance::CPerformance()
: iTestingPerformance(EFalse) // Default to no performance testing
{}
CPerformance::~CPerformance()
{}
////////////////////////////////////////////////////////////////////////
// Use this class as a place holder to turn performance testing on/off
////////////////////////////////////////////////////////////////////////
CTestAction* CPerformanceTest::NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec)
{
CTestAction* me = CPerformanceTest::NewLC(aFs, aConsole, aOut, aTestActionSpec);
CleanupStack::Pop(me);
return (me);
}
CTestAction* CPerformanceTest::NewLC(RFs& /*aFs*/, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec)
{
CPerformanceTest* me = new (ELeave) CPerformanceTest(aConsole, aOut);
CleanupStack::PushL(me);
me->ConstructL(aTestActionSpec);
return (static_cast<CTestAction*>(me));
}
CPerformanceTest::CPerformanceTest(CConsoleBase& aConsole, Output& aOut)
: CTestAction(aConsole, aOut)
{
}
CPerformanceTest::~CPerformanceTest()
{
}
void CPerformanceTest::ConstructL(const TTestActionSpec& aTestActionSpec)
{
CTestAction::ConstructL(aTestActionSpec);
// Switch on performance testing?
TPtrC8 enablePtr = Input::ParseElement(aTestActionSpec.iActionBody, KPerformanceTestStart, KPerformanceTestEnd);
TBool enablePerformance = VectorUtils::ParseBoolL(enablePtr);
CPerformance::PerformanceTester()->SetTestingPerformance(enablePerformance);
iExpectedResult = KErrNone;
}
void CPerformanceTest::DoPerformPrerequisite(TRequestStatus& aStatus)
{
TRequestStatus* status = &aStatus;
User::RequestComplete(status, KErrNone);
iActionState = CTestAction::EAction;
}
void CPerformanceTest::DoPerformPostrequisite(TRequestStatus& aStatus)
{
TRequestStatus* status = &aStatus;
iFinished = ETrue;
User::RequestComplete(status, KErrNone);
}
void CPerformanceTest::PerformAction(TRequestStatus& aStatus)
{
iResult = ETrue;
iFinished = ETrue;
TRequestStatus* status = &aStatus;
User::RequestComplete(status, KErrNone);
}