diff -r 000000000000 -r 72b543305e3a messagingappbase/smilparser/SMILdtd/tsrc/t_TestScript.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/smilparser/SMILdtd/tsrc/t_TestScript.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,162 @@ +// Copyright (c) 2001-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: +// Basic test script handling. +// +// + + +#include "t_TestScript.h" + + +_LIT(KCantOpenFile, "Could not open file: %S"); +_LIT(KMiscFileError, "File error"); + +_LIT(KInfoTestFinished, "[%4d] Test finished: %S"); +_LIT(KInfoTestStarted, "[%4d] Starting test: %S"); + + +// +// +// CTestScript +// + +CTestScript::~CTestScript() + { + iFile.Close(); + } + + +CTestScript* CTestScript::NewL(RFs& aFs) + { + CTestScript* self = new (ELeave) CTestScript(aFs); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + + +CTestScript::CTestScript(RFs& aFs) +: iFs(aFs) + { + } + + +void CTestScript::ConstructL() + { + } + + +TBool CTestScript::LoadFileL(const TDesC& aFileName) + { + iFile.Close(); + iEndOfFile = EFalse; + TBool loaded = EFalse; + + TInt err = iFile.Open(iFs, aFileName, EFileShareAny); + + if (err == KErrNone) + { + loaded = ETrue; + } + else + { + iLastError.Format(KCantOpenFile, aFileName); + } + + return loaded; + } + + +TBool CTestScript::GetLineL(TTestScriptString& aLine) + { + TBool noError = EFalse; + TInt startPosition = 0; + + // Save the current position + TInt err = iFile.Seek(ESeekCurrent, startPosition); + + if (err == KErrNone) + { + // Read a block of data + TTestScriptString dataFromFile; + err = iFile.Read(dataFromFile); + + if (err != KErrNone) + { + iLastError.Copy(KMiscFileError); + } + else + { + // Look for the cr/lf pair, or the end of the line + TInt bytesOnLine = 0; + TBool finished = EFalse; + while (!finished) + { + if (bytesOnLine == dataFromFile.Size()) + { + finished = ETrue; + } + else if (dataFromFile[bytesOnLine] == 0x0d) + { + finished = ETrue; + } + else + { + bytesOnLine++; + } + } + + TInt startOfNextLine = startPosition + bytesOnLine + 1; + + if (bytesOnLine + 1 < dataFromFile.Size()) + { + if (dataFromFile[bytesOnLine + 1] == 0x0a) + { + startOfNextLine++; + } + } + + // Seek to after the cr/lf pair + iFile.Seek(ESeekStart, startOfNextLine); + + // Set the line + aLine.Copy(dataFromFile.Left(bytesOnLine)); + + // Get rid of any trailing white-space + TInt whiteSpaceIndex = aLine.Size(); + TBool noMoreWhiteSpace = EFalse; + while ((whiteSpaceIndex--) && (!noMoreWhiteSpace)) + { + if ((aLine[whiteSpaceIndex] == ' ') + || (aLine[whiteSpaceIndex] == '\t')) + { + aLine.SetLength(whiteSpaceIndex); + } + else + { + noMoreWhiteSpace = ETrue; + } + } + + if (dataFromFile.Size() != 0) + { + noError = ETrue; + } + } + } + + return noError; + } +