diff -r 675a964f4eb5 -r 35751d3474b7 cryptomgmtlibs/securitytestfw/test/rtestwrapper/rtestwrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cryptomgmtlibs/securitytestfw/test/rtestwrapper/rtestwrapper.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -0,0 +1,161 @@ +/* +* Copyright (c) 2007-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: +* Wrapper for RTest which logs to a file, coun1ts failures (without panicing) and +* generates a final result line the ONB will parse. +* +*/ + + + + +/** + @file +*/ +#include +#include +#include + +class CTestConsole: public CConsoleBase + { +public: + static CTestConsole* NewL(CConsoleBase* aCon, const TDesC &aFileName); + TInt Create(const TDesC16& aTitle,TSize aSize) {return iCon->Create(aTitle,aSize);}; + void Read(TRequestStatus& aStatus) {iCon->Read(aStatus);}; + void ReadCancel(void) {iCon->ReadCancel();}; + void Write(const TDesC16& aString); + TPoint CursorPos(void) const {return iCon->CursorPos();}; + void SetCursorPosAbs(const TPoint& aPos) {iCon->SetCursorPosAbs(aPos);}; + void SetCursorPosRel(const TPoint& aPos) {iCon->SetCursorPosRel(aPos);}; + void SetCursorHeight(TInt aHeight) {iCon->SetCursorHeight(aHeight);}; + void SetTitle(const TDesC16& aTitle) {iCon->SetTitle(aTitle);}; + void ClearScreen(void) {iCon->ClearScreen();}; + void ClearToEndOfLine(void) {iCon->ClearToEndOfLine();}; + TSize ScreenSize(void) const {return iCon->ScreenSize();}; + TKeyCode KeyCode(void) const {return iCon->KeyCode();}; + TUint KeyModifiers(void) const {return iCon->KeyModifiers();}; + ~CTestConsole(void); +private: + void ConstructL(const TDesC &aFileName); + CTestConsole(void); + CConsoleBase* iCon; + RFs iFs; + RFile iFile; + }; + +CTestConsole* CTestConsole::NewL(CConsoleBase* aCon, const TDesC &aFileName) + { + CTestConsole* self; + self=new (ELeave) CTestConsole; + CleanupStack::PushL(self); + self->iCon=aCon; + self->ConstructL(aFileName); + CleanupStack::Pop(self); + return self; + } + +void CTestConsole::ConstructL(const TDesC &aFileName) + { + User::LeaveIfError(iFs.Connect()); + (void) iFs.Delete(aFileName); + User::LeaveIfError(iFile.Create(iFs, aFileName, EFileShareAny | EFileWrite)); + } + + +CTestConsole::CTestConsole(void):CConsoleBase() + { + } + +CTestConsole::~CTestConsole(void) + + { + delete iCon; + iFile.Close(); + iFs.Close(); + } + +void CTestConsole::Write(const TDesC16& aString) + + { + iCon->Write(aString); + TUint8 space[200]; + TPtr8 ptr(space,200); + ptr.Copy(aString); + iFile.Write(ptr); + } + +EXPORT_C RTestWrapper::RTestWrapper(const TDesC &aTitle,TInt aThrowaway,const TText* anOtherThrowaway) + : RTest(aTitle, aThrowaway, anOtherThrowaway), + iNestLevel(0), + iTestCount(0), + iThisTestFailed(EFalse), + iFailedCount(0), + iTitle(aTitle) + { + } + +EXPORT_C void RTestWrapper::operator()(TInt aResult,TInt aLineNum,const TText* aFileName) + { + if(!aResult) + { + RTest::Printf(_L("RTEST: Test FAILED %s:%d\n"), aFileName, aLineNum); + if(!iThisTestFailed) + { + ++iFailedCount; + } + iThisTestFailed = ETrue; + } + } + +EXPORT_C void RTestWrapper::Title(const TDesC &aFileName) + { + // CheckConsoleCreated(); // Can not use this because they forgot to export it! + RTest::Title(); // Make sure console is created before we try and wrap it + CConsoleBase *console(0); + TRAPD(err, console = CTestConsole::NewL(RTest::Console(), aFileName)); + if(err == KErrNone) + { + RTest::SetConsole(console); + } + + RTest::Title(); + } + + +EXPORT_C void RTestWrapper::Start(const TDesC16 &aHeading) + { + RTest::Start(aHeading); + ++iNestLevel; + ++iTestCount; + iThisTestFailed = EFalse; + } + +EXPORT_C void RTestWrapper::Next(const TDesC16 &aHeading) + { + RTest::Next(aHeading); + ++iTestCount; + iThisTestFailed = EFalse; + } + +EXPORT_C void RTestWrapper::End() + { + RTest::End(); + --iNestLevel; + if(iNestLevel == 0) + { + RTest::Printf(_L("\r\n%d tests failed out of %d\r\n"), iFailedCount, iTestCount); + } + } + +// End of file