diff -r 8ef833fbf5aa -r d0d9cc530d21 telephonyserverplugins/simtsy/testconfigfileparser/test/t_testconfigfileparser.cpp --- /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 +#include +#include //< for RTest +#include "testconfigfileparser.h" +#include + + +_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 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; + }