telephonyserverplugins/simtsy/testconfigfileparser/test/t_testconfigfileparser.cpp
changeset 68 d0d9cc530d21
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simtsy/testconfigfileparser/test/t_testconfigfileparser.cpp	Thu Sep 02 21:42:07 2010 +0300
@@ -0,0 +1,261 @@
+// 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:
+// Tests classes defined in testconfigfileparser.h
+// 
+//
+
+/**
+ @file t_testconfigfileparser.cpp
+ @since Hurricane
+ @copyright Copyright (c) 2001 Symbian Ltd.  All rights reserved.
+*/
+
+#include <autotest.h>
+#include <e32base.h>
+#include <e32test.h>		//< for RTest
+#include "testconfigfileparser.h"
+#include <f32file.h>
+
+
+_LIT(KTestScriptFile, "t_testconfigfileparser.txt");
+_LIT(KTestScriptComponent, "testscripts");
+_LIT(KTestScriptComponentFull, "\\testscripts\\");
+_LIT(KTestScriptOutput, "c:\\output.txt");
+
+CAutoTest* gAutoTest;
+RTest gTest(_L("Test Config File Test"));
+
+void TestGetElementL(TInt aTestCase, const TDesC8& aInput, TChar aDel, TInt aIndex, const TDesC8& aExpected, TBool aTrimOutput=ETrue)
+	{
+	TPtrC8 item(KNullDesC8);
+	const TInt err = CTestConfig::GetElement(aInput, aDel, aIndex, item, aTrimOutput);
+
+	const TInt KPrintfMaxLen = 200;
+	TBuf<KPrintfMaxLen> temp;
+
+	if (aInput.Length() <= KPrintfMaxLen)
+		{
+		temp.Copy(aInput);
+		gTest.Printf(_L("aInput=\"%S\" "), &temp);
+		}
+	else
+		gTest.Printf(_L("aInput=TOO LONG "));
+
+	gTest.Printf(_L("aIndex=%d "), aIndex);
+	gTest.Printf(_L("aTimeOutput=%d "), aTrimOutput);
+
+	if (aExpected.Length() <= KPrintfMaxLen)
+		{
+		temp.Copy(aExpected);
+		gTest.Printf(_L("aExpected=\"%S\" "), &temp);
+		}
+	else
+		gTest.Printf(_L("aExpected=TOO LONG "));
+
+	if (item.Length() <= KPrintfMaxLen)
+		{
+		temp.Copy(item);
+		gTest.Printf(_L("Get=\"%S\" "), &temp);
+		}
+	else
+		gTest.Printf(_L("Get=TOO LONG "));
+
+	gTest.Printf(_L("Err=%d\n"), err);
+
+	GLOBAL_CHECKPOINT_COMPARE(err, KErrNone, _L("Error getting element"));
+
+	temp.Format(_L("Element not expected [test=%d"), aTestCase);
+	GLOBAL_CHECKPOINT_COMPARE(!(item == aExpected), EFalse, temp);
+	}
+
+void TestGetElementL(const CTestConfig& aFile)
+	{
+	TInt sectionCount = aFile.Sections().Count();
+
+	while (sectionCount--)
+		{
+		const CTestConfigSection& section = aFile[sectionCount];
+
+		TInt itemCount = section.Items().Count();
+
+		while (itemCount--)
+			{
+			const CTestConfigItem& item = section[itemCount];
+			TPtrC8 output(KNullDesC8);
+			aFile.GetElement(item.Value(), ',', 0, output);
+			}
+		}
+	}
+
+void TestParseFileL()
+	{
+	RFs fs;
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+
+	TFindFile findFile(fs);
+	_LIT(KWild, "*.txt");
+
+	CDir* dirs=NULL;
+	User::LeaveIfError(findFile.FindWildByDir(KWild, KTestScriptComponentFull, dirs));
+
+	TInt count = dirs->Count();
+
+	while (count--)
+		{
+		const TFileName fileName((*dirs)[count].iName);
+
+		CTestConfig* file = CTestConfig::NewLC(fs, KTestScriptComponent, fileName); 
+
+		file->WriteFileL(KTestScriptOutput);
+
+		CTestConfig* output = CTestConfig::NewLC(fs, KTestScriptComponent, KTestScriptOutput); 
+
+		TBool test = (*output == *file);
+
+		GLOBAL_CHECKPOINT_COMPARE(!test, EFalse, _L("Output != File"));
+
+		TestGetElementL(*file);
+
+		CleanupStack::PopAndDestroy(output);
+		CleanupStack::PopAndDestroy(file);
+		}
+
+	CleanupStack::PopAndDestroy(&fs);
+	}
+
+const TInt del = ';';
+_LIT8(KFirst, "First");
+_LIT8(KMiddle, "Middle");
+_LIT8(KLast, "Last");
+_LIT8(KElem1, "First;Middle;Last");
+_LIT8(KElem2, "    First;           ;Last");
+_LIT8(KElem3, ";   Middle       ;Last");
+_LIT8(KElem4, "First;Middle;     ");
+_LIT8(KElem5, ";;");
+
+void TestGetElementL()
+	{
+	TInt testCase = 0;
+
+	TestGetElementL(++testCase, KElem1, del, 0, KFirst);
+	TestGetElementL(++testCase, KElem1, del, 1, KMiddle);
+	TestGetElementL(++testCase, KElem1, del, 2, KLast);
+
+	TestGetElementL(++testCase, KElem2, del, 0, KFirst);
+	TestGetElementL(++testCase, KElem2, del, 1, KNullDesC8);
+	TestGetElementL(++testCase, KElem2, del, 2, KLast);
+
+	TestGetElementL(++testCase, KElem3, del, 0, KNullDesC8);
+	TestGetElementL(++testCase, KElem3, del, 1, KMiddle);
+	TestGetElementL(++testCase, KElem3, del, 2, KLast);
+
+	TestGetElementL(++testCase, KElem4, del, 0, KFirst);
+	TestGetElementL(++testCase, KElem4, del, 1, KMiddle);
+	TestGetElementL(++testCase, KElem4, del, 2, KNullDesC8);
+
+	TestGetElementL(++testCase, KElem5, del, 0, KNullDesC8);
+	TestGetElementL(++testCase, KElem5, del, 1, KNullDesC8);
+	TestGetElementL(++testCase, KElem5, del, 2, KNullDesC8);
+	}
+
+void PrepareBuf(TDes8& aOutput, TInt aLeadingSpaces, const TDesC8& aInput, TInt aTrailingSpaces)
+	{
+	const TInt KSpace = ' ';
+	aOutput.Zero();
+	aOutput.AppendFill(KSpace, aLeadingSpaces);
+	aOutput.Append(aInput);
+	aOutput.AppendFill(KSpace, aTrailingSpaces);
+	}
+
+void TestGetElementWithoutTrimL()
+	{
+	TInt testCase = 0;
+	TBuf8<32> temp;
+
+	TestGetElementL(++testCase, KElem1, del, 0, KFirst, EFalse);
+	TestGetElementL(++testCase, KElem1, del, 1, KMiddle, EFalse);
+	TestGetElementL(++testCase, KElem1, del, 2, KLast, EFalse);
+
+	PrepareBuf(temp, 4, KFirst, 0);
+	TestGetElementL(++testCase, KElem2, del, 0, temp, EFalse);
+	PrepareBuf(temp, 11, KNullDesC8, 0);
+	TestGetElementL(++testCase, KElem2, del, 1, temp, EFalse);
+	TestGetElementL(++testCase, KElem2, del, 2, KLast, EFalse);
+
+	TestGetElementL(++testCase, KElem3, del, 0, KNullDesC8, EFalse);
+	PrepareBuf(temp, 3, KMiddle, 7);
+	TestGetElementL(++testCase, KElem3, del, 1, temp, EFalse);
+	TestGetElementL(++testCase, KElem3, del, 2, KLast, EFalse);
+
+	TestGetElementL(++testCase, KElem4, del, 0, KFirst, EFalse);
+	TestGetElementL(++testCase, KElem4, del, 1, KMiddle, EFalse);
+	PrepareBuf(temp, 5, KNullDesC8, 0);
+	TestGetElementL(++testCase, KElem4, del, 2, temp, EFalse);
+
+	TestGetElementL(++testCase, KElem5, del, 0, KNullDesC8, EFalse);
+	TestGetElementL(++testCase, KElem5, del, 1, KNullDesC8, EFalse);
+	TestGetElementL(++testCase, KElem5, del, 2, KNullDesC8, EFalse);
+
+	TPtrC8 output;
+	const TInt err = CTestConfig::GetElement(KNullDesC8, 0, 0, output);
+	GLOBAL_CHECKPOINT(err != KErrNone);
+	}
+
+
+// Set up the array of test functions, which make the API calls
+LOCAL_C const TAutoTestCase Cases[] =
+	{
+	{TestParseFileL,_S("Parse File")},
+	{TestGetElementL,_S("Get Element")},
+	{TestGetElementWithoutTrimL,_S("Get Element Without Trim")}
+	};
+
+void AutoTestExecuteL()
+	{
+	_LIT(KDummyTests,"TestConfigFileParser_testreport.txt");
+	_LIT8(KComponentInfo,"TestConfigFileParser");
+	// Library defined macro
+	// Uses a global pointer instance of CAutoTest
+	GLOBAL_AUTOTEST_EXECUTE(Cases, KDummyTests, KComponentInfo, gTest);
+	}
+
+TInt E32Main()
+/**
+ * Main
+ */
+	{
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+
+	__UHEAP_MARK;
+
+	gTest.SetLogged(ETrue);
+	gTest.Title();
+	gTest.Start(_L("Starting tests..."));
+
+	TRAPD(err, AutoTestExecuteL());
+
+	if (err!=KErrNone)
+		gTest.Printf(_L("ERROR: Leave %d\n"),err);
+
+	gTest.Printf(_L("Test Complete. Press any key ...\n"));
+	gTest.Getch();
+	gTest.End();
+	gTest.Close();
+
+	__UHEAP_MARKEND;
+
+	delete cleanup;
+	return KErrNone;
+	}