--- /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 <e32std.h>
+#include <e32base.h>
+#include <f32file.h>
+#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<CScriptSection>& 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<CScriptSection>* 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<CScriptSectionItem>& 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<CScriptSectionItem>* 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