diff -r 9f5ae1728557 -r db3f5fa34ec7 messagingfw/msgtest/testutils/base/inc/msgTestScripts.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/msgtest/testutils/base/inc/msgTestScripts.h Wed Nov 03 22:41:46 2010 +0530 @@ -0,0 +1,144 @@ +// Copyright (c) 1999-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: +// + +#ifndef TEST_SCRIPTS_H_ +#define TEST_SCRIPTS_H_ + +#include +#include +#include +#include "msvtestutilsbase.h" + +class CScriptSection; +class CScriptSectionItem; + +_LIT(KScriptPanic, "MSG-TEST-SCRIPT"); +_LIT(KScriptSectionStart, "["); +_LIT(KScriptCRLF, "\r\n"); +_LIT(KScriptLF, "\n"); +_LIT(KScriptCR, "\r"); +_LIT(KScriptItemEnd, "="); +_LIT(KDefaults, "Defaults"); +_LIT(KDefault1, "Def"); +_LIT(KDefault2, "Default"); + +class CScriptFile : public CBase + { + public: + IMPORT_C static CScriptFile* NewLC(CTestUtils& aTestUtils, const TDesC& aComponent, const TDesC& aScriptFile); + IMPORT_C static CScriptFile* NewLC(CTestUtils& aTestUtils, const TDesC& aComponent); + IMPORT_C ~CScriptFile(); + + IMPORT_C const TDesC& ItemValue(const TDesC& aSection, const TDesC& aItem, const TDesC& aDefault); + IMPORT_C TInt ItemValue(const TDesC& aSection, const TDesC& aItem, const TInt aDefault); + + IMPORT_C static HBufC* ItemValueLC(CTestUtils& aTestUtils, const TDesC& aComponent, const TDesC& aScript, const TDesC& aSection, const TDesC& aItem, const TDesC& aDefault); + IMPORT_C static TInt ItemValueL(CTestUtils& aTestUtils, const TDesC& aComponent, const TDesC& aScript, const TDesC& aSection, const TDesC& aItem, const TInt aDefault); + + IMPORT_C void ReadScriptL(const TDesC& aScript); + + inline CArrayPtrFlat& Sections() const; + + IMPORT_C CScriptSection* Section(const TDesC& aSectionName); //return NULL if section not found + inline CScriptSection& SectionL(const TDesC& aSectionName); //leaves with KErrNotFound if section not found + inline CScriptSection& Section(TInt aIndex) const {return *iSections->At(aIndex);} + + IMPORT_C static TInt GetNextWord(TLex& aInput, TChar aDelimiter, TInt& aOutput); + IMPORT_C static TInt GetNextWord(TLex& aInput, TChar aDelimiter, TPtrC& aOutput); + IMPORT_C static void ReplaceL(const TDesC& aOld, const TDesC& aNew, HBufC*& rString); + IMPORT_C static HBufC* ReplaceLC(const TDesC& aOld, const TDesC& aNew, const TDesC& aOldString); + + protected: + CScriptFile(CTestUtils& aTestUtils); + void ConstructL(const TDesC& aComponent); + + CArrayPtrFlat* iSections; + CScriptSection* iLastSection; + CTestUtils& iTestUtils; + HBufC* iComponent; + + TPtrC ParseValue(const TDesC& aText, const TLex& aInput, TInt aCurrentItemStart) const; + void ParseAndSetItemValueL(const TDesC& aText, const TLex& aInput, TInt aCurrentItemStart, CScriptSectionItem*& arCurrentItem); + void FoundNewItemL(const TDesC& aText, TLex& arInput, TInt& arCurrentItemStart, CScriptSection& aSection, CScriptSectionItem*& arCurrentItem); + void CopyInDefaultsL(CScriptSection& aSection, const TDesC& aDefaultFile); + + HBufC* ReadFileLC(const TDesC& aScript) const; + HBufC8* ReadFileL(const TDesC& aFile) const; + }; + +class CScriptSection : public CBase + { + friend class CScriptFile; + + public: + IMPORT_C static CScriptSection* NewLC(const TDesC& aSectionName); + IMPORT_C static CScriptSection* NewLC(const TDesC& aSectionName, CScriptSection& aDefaults); + IMPORT_C ~CScriptSection(); + + inline const TDesC& SectionName() const; + + IMPORT_C CScriptSectionItem* Item(const TDesC& aItem); //return NULL if the item does not exist + inline CScriptSectionItem& ItemL(const TDesC& aItem); //leaves with KErrNotFound if the item does not exist + + IMPORT_C const TDesC& ItemValue(const TDesC& aItem, const TDesC& aDefault); + IMPORT_C TInt ItemValue(const TDesC& aItem, TInt aDefault); + + IMPORT_C CScriptSectionItem& AddItemL(const TDesC& aItem, const TDesC& aValue); + IMPORT_C void AddItemIfNotExistL(const TDesC& aItem, const TDesC& aValue); + IMPORT_C CScriptSectionItem& ReplaceItemL(const TDesC& aItem, const TDesC& aValue); + IMPORT_C void DeleteItemsL(const TDesC& aItem); + + inline CArrayPtrFlat& Items() const {return *iItems;} + inline CScriptSectionItem& Item(TInt aIndex) const {return *iItems->At(aIndex);} + + inline void SetDefaultsL(CScriptSection& aDefaults); + inline CScriptSection* Defaults() const {return iDefaults;} + + IMPORT_C CScriptSection* CopyLC(); + + private: + void ConstructL(const TDesC& aSectionName); + CScriptSection(); + CArrayPtrFlat* iItems; + HBufC* iSectionName; + CScriptSectionItem* iLastItem; + CScriptSection* iDefaults; + }; + +class CScriptSectionItem : public CBase + { + friend class CScriptSection; + friend class CScriptItem; + + public: + IMPORT_C static CScriptSectionItem* NewLC(CScriptSection& aParent, const TDesC& aItem, const TDesC& aValue); + inline CScriptSectionItem* CopyLC(); + + IMPORT_C ~CScriptSectionItem(); + HBufC* iValue; + inline const TDesC& Item() const; + inline const TDesC& Value() const; + + CScriptSection& iParent; + + private: + CScriptSectionItem(CScriptSection& aParent); + void ConstructL(const TDesC& aItem, const TDesC& aValue); + HBufC* iItem; + }; + +#include "msgtestscripts.inl" + +#endif