--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/xml/libxml2libs/test/tef/xml2/src/texmlstring.cpp Thu Dec 17 09:29:21 2009 +0200
@@ -0,0 +1,432 @@
+// 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 texmlstring.cpp
+ @internalTechnology
+*/
+
+#include "texml2teststep.h"
+#include <xml/utils/xmlengxestrings.h>
+#include <string.h>
+#include <utf.h>
+#include <e32des16.h>
+
+/**
+ * Class CXmlStringStep Implementation
+ */
+
+/**
+ * Constructor. Sets the test step name so that it can be
+ * differentiated from within doTestStepL()
+ */
+CXmlStringStep::CXmlStringStep(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 CXmlStringStep::doTestStepL(void)
+ {
+ if (TestStepName() == KXmlStringCopy)
+ {
+ INFO_PRINTF1(KXmlStringCopy);
+ SetTestStepResult(TestKXmlStringCopy());
+ }
+ else if (TestStepName() == KXmlStringSetStep1)
+ {
+ INFO_PRINTF1(KXmlStringSetStep1);
+ SetTestStepResult(TestKXmlStringSetStep1());
+ }
+ else if (TestStepName() == KXmlStringSetStep2)
+ {
+ INFO_PRINTF1(KXmlStringSetStep2);
+ SetTestStepResult(TestKXmlStringSetStep2());
+ }
+ else if (TestStepName() == KXmlStringAlloc1)
+ {
+ INFO_PRINTF1(KXmlStringAlloc1);
+ SetTestStepResult(TestKXmlStringAlloc1());
+ }
+ else if (TestStepName() == KXmlStringAlloc2)
+ {
+ INFO_PRINTF1(KXmlStringAlloc2);
+ SetTestStepResult(TestKXmlStringAlloc2());
+ }
+ else if (TestStepName() == KXmlStringAllocAndFree1)
+ {
+ INFO_PRINTF1(KXmlStringAllocAndFree1);
+ SetTestStepResult (TestKXmlStringAllocAndFree1());
+ }
+ else if (TestStepName() == KXmlStringAllocAndFree2)
+ {
+ INFO_PRINTF1(KXmlStringAllocAndFree2);
+ SetTestStepResult(TestKXmlStringAllocAndFree2());
+ }
+ else if (TestStepName() == KXmlStringAppend)
+ {
+ INFO_PRINTF1(KXmlStringAppend);
+ SetTestStepResult (TestKXmlStringAppend());
+ }
+ else if (TestStepName() == KXmlStringCompare)
+ {
+ INFO_PRINTF1(KXmlStringCompare);
+ SetTestStepResult(TestKXmlStringCompare());
+ }
+ return TestStepResult();
+ }
+/**
+ * Tests the APIs Copy(), Free(), PushL(), Set()
+ */
+TVerdict CXmlStringStep::TestKXmlStringCopy()
+ {
+ char *string1 = new char[34];
+ const char *compareString2 = "<SampleTag>TestString</SampleTag>";
+ strcpy(string1, "<SampleTag>TestString</SampleTag>");
+ TXmlEngString *testString = new (ELeave) TXmlEngString(string1);
+ testString->PushL();
+ char* resultString = testString->CopyL();
+ if (0 != strcmp(resultString, compareString2))
+ {
+ return EFail;
+ }
+ CleanupStack::Pop();
+ User::Free(resultString);
+ resultString = 0;
+
+ //Test Set(TXmlEngString& src)
+ TXmlEngString *testString2 = new (ELeave) TXmlEngString();
+ testString2->Set(*testString);
+ resultString = testString2->CopyL();
+ char* resultString2 = testString->CopyL();
+ //Check if the testString2 object has the same string
+ //and testString object's string is empty.
+ if (0 != strcmp(resultString, compareString2) && 0 != resultString2)
+ {
+ return EFail;
+ }
+ User::Free(resultString);
+ resultString = 0;
+ //Test if the same object is passed to Set(), it does not delete the
+ //existing string inside.
+ testString2->Set(*testString2); //both have same string inside
+ resultString = testString2->CopyL();
+ if (0 != strcmp(resultString, compareString2))
+ {
+ return EFail;
+ }
+
+ char *singleChar = new char[2];
+ strcpy(singleChar, "V\0");
+ testString->Set(singleChar);
+ testString2->Set(*testString);
+ resultString = testString2->CopyL();
+ if (0 != strcmp(resultString, "V"))
+ {
+ return EFail;
+ }
+ //Free the object
+ testString->Free();
+ return EPass;
+ }
+/**
+ * Tests TXmlEngString::SetL(const TDesC8& aDes8)
+ */
+TVerdict CXmlStringStep::TestKXmlStringSetStep1()
+ {
+ _LIT(KText, "<TestData>SomeData</TestData>");
+ const char *compareString = "<TestData>SomeData</TestData>";
+ TBufC<30> buf(KText);
+ TPtrC desc = buf.Des();
+ TBuf8<30> buf8;
+ CnvUtfConverter::ConvertFromUnicodeToUtf8(buf8, desc);
+
+ char *string1 = new char[34];
+ strcpy(string1, "<SampleTag>TestString</SampleTag>");
+ TXmlEngString *testString = new (ELeave) TXmlEngString(string1);
+
+ //now set the new value for testString
+ testString->SetL(buf8);
+ char* resultString = testString->CopyL();
+ if ( 0 != strcmp(resultString, compareString))
+ {
+ return EFail;
+ }
+ User::Free(resultString);
+ resultString = 0;
+ //now try setting value to empty TXmlEngString object
+ TXmlEngString *testString2 = new (ELeave) TXmlEngString();
+ testString2->SetL(buf8);
+ resultString = testString2->CopyL();
+ if ( 0 != strcmp(resultString, compareString))
+ {
+ return EFail;
+ }
+ return EPass;
+ }
+
+/**
+ * Tests TXmlEngString::SetL(const TDesC8& aDes8)
+ */
+TVerdict CXmlStringStep::TestKXmlStringSetStep2()
+ {
+ _LIT(KText, "<TestData>SomeData</TestData>");
+ const char *compareString = "<TestData>SomeData</TestData>";
+ TBufC<30> buf(KText);
+ TPtrC desc = buf.Des();
+ char *string1 = new char[34];
+ strcpy(string1, "<SampleTag>TestString</SampleTag>");
+ TXmlEngString *testString = new (ELeave) TXmlEngString(string1);
+
+ //now set the new value for testString
+ testString->SetL(buf);
+ char* resultString = testString->CopyL();
+ if ( 0 == testString->Length() || 0 != strcmp(resultString, compareString))
+ {
+ return EFail;
+ }
+ User::Free(resultString);
+ resultString = 0;
+ //now try setting value to empty TXmlEngString object
+ TXmlEngString *testString2 = new (ELeave) TXmlEngString();
+ resultString = testString2->CopyL();
+ if (testString2->Length() != 0 && resultString != 0)
+ {
+ return EFail;
+ }
+ testString2->SetL(buf);
+ resultString = testString2->CopyL();
+ if ( 0 != strcmp(resultString, compareString))
+ {
+ return EFail;
+ }
+ return EPass;
+ }
+
+/**
+ * Tests AppendL(), Size(), Copy()
+ */
+TVerdict CXmlStringStep::TestKXmlStringAppend()
+ {
+ char *string2 = new char[34];
+ const char *compareString = "<SampleTag>TestString</SampleTag>";
+ const char *compareString2 =
+ "<SampleTag>TestString</SampleTag><SampleTag>TestString</SampleTag>";
+ strcpy(string2, "<SampleTag>TestString</SampleTag>");
+
+ //empty testString to start with
+ TXmlEngString *testString = new (ELeave) TXmlEngString();
+ //without string
+ TXmlEngString *appendString1 = new (ELeave) TXmlEngString();
+ //with string
+ TXmlEngString *appendString2 = new (ELeave) TXmlEngString(string2);
+
+ testString->AppendL(*appendString1, *appendString2);
+ char* resultString = testString->CopyL();
+ TInt len = appendString1->Size();
+ if (len)
+ {
+ return EFail;
+ }
+ if ( 0 != strcmp(resultString, compareString))
+ {
+ return EFail;
+ }
+ User::Free(resultString);
+ resultString = 0;
+
+ appendString2->AppendL(*testString);
+ resultString = appendString2->CopyL();
+ if ( 0 != strcmp(compareString2, resultString))
+ {
+ return EFail;
+ }
+ return EPass;
+ }
+
+/**
+ * Tests TXmlEngString::AllocL
+ */
+TVerdict CXmlStringStep::TestKXmlStringAlloc1()
+ {
+ char *string = new char[34];
+ strcpy(string, "<SampleTag>TestString</SampleTag>");
+ //empty string
+ TXmlEngString *testString = new (ELeave) TXmlEngString();
+ HBufC* resBuf = testString->AllocL();
+
+ if (resBuf->Size())
+ {
+ return EFail;
+ }
+ TXmlEngString *testString2 = new (ELeave) TXmlEngString(string);
+ resBuf = testString2->AllocL();
+ _LIT(KText, "<SampleTag>TestString</SampleTag>");
+ TBufC<33> buf(KText);
+
+ if (resBuf->Compare(buf.Des()))
+ {
+ return EFail;
+ }
+ return EPass;
+ }
+
+/**
+ * Tests TXmlEngString::AllocLC
+ */
+TVerdict CXmlStringStep::TestKXmlStringAlloc2()
+ {
+ char *string = new char[34];
+ strcpy(string, "<SampleTag>TestString</SampleTag>");
+ //empty string
+ TXmlEngString *testString = new (ELeave) TXmlEngString();
+ HBufC* resBuf = testString->AllocLC();
+ TInt compare = resBuf->Size();
+ CleanupStack::PopAndDestroy();
+ if (compare)
+ {
+ return EFail;
+ }
+
+ TXmlEngString *testString2 = new (ELeave) TXmlEngString(string);
+ resBuf = testString2->AllocLC();
+ _LIT(KText, "<SampleTag>TestString</SampleTag>");
+ TBufC<33> buf(KText);
+ compare = resBuf->Compare(buf.Des());
+ CleanupStack::PopAndDestroy();
+ if (compare)
+ {
+ return EFail;
+ }
+ return EPass;
+ }
+/**
+ * Tests TXmlEngString::AllocAndFreeL
+ */
+TVerdict CXmlStringStep::TestKXmlStringAllocAndFree1()
+ {
+ char *string = new char[34];
+ strcpy(string, "<SampleTag>TestString</SampleTag>");
+ //empty string
+ TXmlEngString *testString = new (ELeave) TXmlEngString();
+ HBufC* resBuf = testString->AllocAndFreeL();
+
+ if (resBuf->Size())
+ {
+ return EFail;
+ }
+ TXmlEngString *testString2 = new (ELeave) TXmlEngString(string);
+ resBuf = testString2->AllocAndFreeL();
+ _LIT(KText, "<SampleTag>TestString</SampleTag>");
+ TBufC<33> buf(KText);
+
+ if (resBuf->Compare(buf.Des()))
+ {
+ return EFail;
+ }
+ return EPass;
+ }
+
+/**
+ * Tests TXmlEngString::AllocAndFreeLC
+ */
+TVerdict CXmlStringStep::TestKXmlStringAllocAndFree2()
+ {
+ char *string = new char[34];
+ strcpy(string, "<SampleTag>TestString</SampleTag>");
+ //empty string
+ TXmlEngString *testString = new (ELeave) TXmlEngString();
+ HBufC* resBuf = testString->AllocAndFreeLC();
+ TInt compare = resBuf->Size();
+ CleanupStack::PopAndDestroy();
+ if (compare)
+ {
+ return EFail;
+ }
+
+ TXmlEngString *testString2 = new (ELeave) TXmlEngString(string);
+ resBuf = testString2->AllocAndFreeLC();
+ _LIT(KText, "<SampleTag>TestString</SampleTag>");
+ TBufC<33> buf(KText);
+ compare = resBuf->Compare(buf.Des());
+ CleanupStack::PopAndDestroy();
+ if (compare)
+ {
+ return EFail;
+ }
+ return EPass;
+ }
+
+/**
+ * Tests TXmlEngString::Compare
+ */
+TVerdict CXmlStringStep::TestKXmlStringCompare()
+ {
+ char *string = new char[12];
+ strcpy(string, "<SampleTag>");
+ TXmlEngString *testString1 = new (ELeave) TXmlEngString();
+ TXmlEngString *testString2 = new (ELeave) TXmlEngString();
+
+ //both strings empty
+ if (testString1->Compare(*testString2))
+ {
+ return EFail;
+ }
+ _LIT(KText, "<TestData>SomeData</TestData>");
+ TBufC<30> buf(KText);
+ TPtrC desc = buf.Des();
+ testString1->SetL(desc);
+ //testString1 has <TestData>SomeData</TestData>, testString2 is empty
+ if (!testString1->Compare(*testString2))
+ {
+ return EFail;
+ }
+ char *empty = new char[1];
+ empty[0] = '\0';
+ //testString1 is set to \0, testString2 is empty
+ testString1->Set(empty);
+ if (testString2->Compare(*testString1))
+ {
+ return EFail;
+ }
+ if (testString1->Compare(*testString2))
+ {
+ return EFail;
+ }
+
+ testString2->Free();
+ char *singleChar = new char[2];
+ strcpy(singleChar, "V\0");
+ testString1->Set(singleChar);
+ if (!testString2->Compare(*testString1))
+ {
+ return EFail;
+ }
+
+ char *string1 = new char[13];
+ strcpy(string1, "<TestString>");
+ char *string2 = new char[13];
+ strcpy(string2, "<TestString>");
+ testString1->Set(string1);
+ testString2->Set(string2);
+ if(testString1->Compare(*testString2))
+ {
+ return EFail;
+ }
+ return EPass;
+ }