diff -r 000000000000 -r e35f40988205 xml/libxml2libs/test/tef/xml2/src/texmlutils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/libxml2libs/test/tef/xml2/src/texmlutils.cpp Thu Dec 17 09:29:21 2009 +0200 @@ -0,0 +1,183 @@ +// Copyright (c) 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: +// + +/** + @file texmlutils.cpp + @internalTechnology +*/ + +#include "texml2teststep.h" +#include "libxml2_globals_private.h" +#include +#include +/** + * Class CXmlUtilStep Implementation + */ + +/** + * Constructor. Sets the test step name so that it can be + * differentiated from within doTestStepL() + */ +CXmlUtilStep::CXmlUtilStep(const TDesC& aStepName) + { + SetTestStepName(aStepName); + } + +/** + * TEF invokes doTestStepL interface along with the step name + * to let appropriate action to be taken for the test step. + */ +TVerdict CXmlUtilStep::doTestStepL(void) + { + if (TestStepName() == KXmlEngXmlCharFromDes) + { + INFO_PRINTF1(KXmlEngXmlCharFromDes); + SetTestStepResult(TestKXmlEngXmlCharFromDes()); + } + else if (TestStepName() == KXmlEngEscapeForXmlValueStep2) + { + INFO_PRINTF1(KXmlEngEscapeForXmlValueStep2); + SetTestStepResult(TestKXmlEngEscapeForXmlValueStep2()); + } + else if (TestStepName() == KXmlEngEscapeForXmlValueStep1) + { + INFO_PRINTF1(KXmlEngEscapeForXmlValueStep2); + SetTestStepResult(TestKXmlEngEscapeForXmlValueStep1()); + } + return TestStepResult(); + } +/** + * Improving on CLibxml2Tester::UtilsXmlCharFromDesL + */ +TVerdict CXmlUtilStep::TestKXmlEngXmlCharFromDes() + { + _LIT(KText, "Test Data"); + TBufC<10> buf(KText); + TPtrC desc = buf.Des(); + TBuf8<10> desc8; + char * tekst = XmlEngXmlCharFromDesL(desc); + + CnvUtfConverter::ConvertFromUnicodeToUtf8(desc8, desc); + if (!CompareDescAndChar(tekst, desc8)) + { + return EFail; + } + TBufC8<10> buf8(desc8); + TPtrC8 inDesc8 = buf8.Des(); + const char * compareString = "Test Data"; + char * tekst2 = XmlEngXmlCharFromDes8L(inDesc8); + if(!CompareChars(tekst2, compareString)) + { + return EFail; + } + return EPass; + } + +/** + * Improving on CLibxml2Tester::UtilsEscapeForXmlValueL + */ +TVerdict CXmlUtilStep::TestKXmlEngEscapeForXmlValueStep1() + { + const char * testString = "Test < & > text."; + const char * compareString = "Test < & > text."; + //Test step 1 + char *resultString = XmlEngEscapeForXmlValueL(testString); + if (!CompareChars(resultString, compareString)) + { + return EFail; + } + return EPass; + } + +/** + * Tests XmlEngEscapeForXmlValueL under different memory conditions + * This test step should be run only on debug builds owing to the + * __UHEAP macros that are defined only in debug builds. + */ +TVerdict CXmlUtilStep::TestKXmlEngEscapeForXmlValueStep2() + { +#ifdef _DEBUG + TInt err = KErrNone; + const char * testString = "Test < & > text."; + xmlGlobalStatePtr gsPtr = xmlCreateAndInitializeGlobalState(); + if (!gsPtr) + { + INFO_PRINTF1(_L("Warning: Global state pointer is NULL\n")); + } + __UHEAP_MARK; + __UHEAP_SETFAIL(RHeap::EDeterministic, 1); + + TRAP(err, XmlEngEscapeForXmlValueL(testString)); + if (err != KErrNoMemory) + { + return EFail; + } + char* result= NULL; + TRAP(err, result = XmlEngEscapeForXmlValueL(NULL)); + if (err != KErrNone && !result) + { + return EFail; + } + __UHEAP_SETFAIL(RHeap::ENone, 0); + __UHEAP_MARKEND; +#else + INFO_PRINTF1(_L("This test is meant to be run only in DEBUG builds. Returning EPASS")); +#endif + return EPass; + } + +/** + * Utility function to compare the characters + */ +TBool CXmlUtilStep::CompareChars(const char* aString1, const char* aString2) + { + TInt strLen = strlen(aString1); + TInt desLen = strlen(aString2); + if (strLen != desLen) + { + return FALSE; + } + else + { + for (TInt i = 0; i < strLen; i++) + { + if (aString1[i] != aString2[i]) + return FALSE; + } + } + return TRUE; + } + +/** + * Utility function to compare C string with Desc8 + */ +TBool CXmlUtilStep::CompareDescAndChar(const char* aString,TDesC8& aDesc) +{ + TInt strLen = strlen(aString); + TInt desLen = aDesc.Length(); + if (strLen != desLen) + { + return FALSE; + } + else + { + for(TInt i = 0; i < strLen; i++) + { + if (aString[i] != aDesc[i]) + return FALSE; + } + } + return TRUE; +}