--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/xml/xmlfw/test/rtest/tsrc/tu_cmatchdataunittests.cpp Thu Dec 17 09:29:21 2009 +0200
@@ -0,0 +1,882 @@
+// Copyright (c) 2005-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:
+// Unit test implementation for CMatchData class
+//
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include <e32test.h>
+#include <f32file.h>
+#include <ecom/ecom.h>
+#include <ecom/implementationinformation.h>
+
+#include <xml/matchdata.h>
+#include <xml/xmlframeworkerrors.h>
+
+/*
+Those tests will make use of a fake array of parsers built for the purpuse of unit test only.
+Here is a detailed list of parser used:
+*/
+
+const TUid KXmlUtP1Uid = {0x10273870};
+const TUid KXmlUtP2Uid = {0x10273871};
+const TUid KXmlUtP4Uid = {0x10273873};
+const TUid KXmlUtP6Uid = {0x10273875};
+const TUid KXmlUtP7Uid = {0x10273876};
+const TUid KXmlUtP9Uid = {0x10273878};
+
+//These 2 Uids are added to test the fix of DEF116214.
+//const TUid KXmlUtP10Uid = {0x60000000}; //0b01100000000000000000000000000000 Large positive number
+const TUid KXmlUtP11Uid = {0x8FFFFFFF}; //0b10001111111111111111111111111111 Very Large negative number
+
+
+//
+
+_LIT(KTestName, "CMatchData Unit Tests");
+RTest Test(KTestName);
+
+//
+//Global variable systemStatus indicating the plugin system status
+RImplInfoArray systemPlugins;
+RImplInfoArray systemPluginsBase;
+
+
+//Test Data
+_LIT8(KXmlUtParserXmlMimeType, "text/xml");
+_LIT8(KXmlUtParserWbXmlMimeType, "text/wbxml");
+_LIT8(KXmlUtSymbianString, "Symbian");
+_LIT8(KXmlUtNullString, "");
+_LIT8(KXmlUtNonExistantString,"NonExistant");
+_LIT8(KXmlUtParserXmlMimeTypeCS, "Text/Xml");
+_LIT8(KXmlUtParserWbXmlMimeTypeCS, "Text/WbXml");
+_LIT8(KXmlUtSymbianStringCS, "symbian");
+_LIT8(KXmlUtExternalString, "External");
+_LIT8(KXmlUtSymbianAdvancedString, "Symbian Advanced");
+_LIT8(KXmlUtExternalV1String, "External V1");
+_LIT8(KXmlUtParserMyXmlMimeTypeCS, "MyText/MyXml");
+
+
+// 256 character string
+TBuf8<256> KXmlUtLongString256;
+//255 character string
+TBuf8<255> KXmlUtLongString255;
+
+// 33 character string
+TBuf8<33> KXmlUtLongString33;
+// 32 character string
+TBuf8<32> KXmlUtLongString32;
+
+// Interface UID for unit test parsers
+TUid KXmlUtParsers = {0x10273867};
+
+// Separator for comand line to run the file copy process
+_LIT(KSeparator, "|");
+
+// Name of the file copy process
+_LIT(KProcessFileManCopyFile, "t_XMLprocessfilemancopyfile.exe");
+
+// Const value for 1 second in miliseconds
+const TInt KOneSecond = 1000000;
+
+static void FileCopyL(const TDesC& anOld,const TDesC& aNew)
+ {
+ TBuf<120> fileNames(anOld);
+ fileNames.Append(KSeparator);
+ fileNames.Append(aNew);
+
+ // Launch process with highier capabilities (to copy into c:\sys\bin directory)
+ TRequestStatus stat;
+ RProcess p;
+ User::LeaveIfError(p.Create(KProcessFileManCopyFile(), fileNames));
+ // Asynchronous logon: completes when process terminates with process
+ // exit code
+ p.Logon(stat);
+ p.Resume();
+
+ User::WaitForRequest(stat);
+ TInt exitReason = p.ExitReason();
+ p.Close();
+ User::LeaveIfError(exitReason);
+
+ }
+
+static void TestPrepareL()
+ {
+ FileCopyL(_L("z:\\XMLRAMONLY\\tu_XmlRamParserPlugins.dll"), _L("C:\\sys\\bin\\tu_XmlRamParserPlugins.dll"));
+ FileCopyL(_L("z:\\XMLRAMONLY\\tu_XmlRamParserPlugins.RSC"), _L("C:\\resource\\plugins\\tu_XmlRamParserPlugins.RSC"));
+
+ //The reason for the folowing delay is:
+ //ECOM server could be already started. It means that when we copy some
+ //ECOM plugins from Z: to C: drive - ECOM server should look for and
+ //find the new ECOM plugins. The ECOM server uses for that CDiscoverer::CIdleScanningTimer
+ //which is an active object. So the discovering service is asynchronous. We have to
+ //wait some time until it finishes. Otherwise ListImplementationsL could fail to find
+ //requested implementations.
+ User::After(KOneSecond * 3);
+ }
+
+
+static void SetUpSystemStatusL()
+ {
+ REComSession& session = REComSession::OpenL();
+ RImplInfoPtrArray array;
+ session.ListImplementationsL(KXmlUtParsers, array);
+ session.Close();
+ for (TInt i = 0; i < array.Count(); i++)
+ {
+ systemPluginsBase.Append(array[i]);
+ }
+ }
+
+static void RefreshPluginsStatus()
+ {
+ systemPlugins.Reset();
+
+ for (TInt i = 0; i < systemPluginsBase.Count(); i++)
+ {
+ systemPlugins.Append(systemPluginsBase[i]);
+ }
+ }
+static void CleanSystem()
+ {
+ for (TInt i = 0; i < systemPluginsBase.Count(); i++)
+ {
+ delete systemPluginsBase[i];
+ }
+ systemPlugins.Close();
+ systemPluginsBase.Close();
+ }
+
+
+/**
+@SYMTestCaseID SYSLIB-XML-UT-3719
+@SYMTestCaseDesc Checking CMatchData functions
+@SYMTestPriority Medium
+@SYMTestActions Testing various functions of the CMatchData class
+@SYMTestExpectedResults The functions should perform as expected.
+@SYMREQ REQ0000
+*/
+static void RunTestsL()
+ {
+ Xml::CMatchData *mData = Xml::CMatchData::NewL();
+ TInt result;
+ TUid resultUid;
+
+ //set up systemStatus
+ TestPrepareL();
+ SetUpSystemStatusL();
+ RefreshPluginsStatus();
+
+ //*************************************************
+ //Test - Basic API
+ Test.Next(_L("Basic Api 1"));
+ TRAP(result,mData->SetMimeTypeL(KXmlUtParserXmlMimeType));
+
+ Test(result == KErrNone);
+ Test(mData->MimeType().Compare(KXmlUtParserXmlMimeType)==0);
+
+ //*************************************************
+ //Test - Basic API
+ Test.Next(_L("Basic Api 2"));
+ KXmlUtLongString256.SetLength(256);
+ TRAP(result,mData->SetMimeTypeL(KXmlUtLongString256));
+
+ Test(result == KErrArgument);
+
+ //*************************************************
+ //Test - Basic API
+ Test.Next(_L("Basic Api 3"));
+ KXmlUtLongString255.SetLength(255);
+ TRAP(result,mData->SetMimeTypeL(KXmlUtLongString255));
+
+ Test(result == KErrNone);
+
+ //*************************************************
+ //Test - Basic API
+ Test.Next(_L("Basic Api 4"));
+ TRAP(result,mData->SetMimeTypeL(KXmlUtNullString));
+
+ Test(result == KErrArgument);
+
+ //*************************************************
+ //Test - Basic API
+ Test.Next(_L("Basic Api 5"));
+ TRAP(result,mData->SetVariantL(KXmlUtSymbianString));
+
+ Test(result == KErrNone);
+ Test(mData->Variant().Compare(KXmlUtSymbianString)==0);
+
+ //*************************************************
+ //Test - Basic API
+ Test.Next(_L("Basic Api 6"));
+ KXmlUtLongString33.SetLength(33);
+ TRAP(result,mData->SetVariantL(KXmlUtLongString33));
+
+ Test(result == KErrArgument);
+
+ //*************************************************
+ //Test - Basic API
+ Test.Next(_L("Basic Api 7"));
+ KXmlUtLongString32.SetLength(32);
+ TRAP(result,mData->SetVariantL(KXmlUtLongString32));
+
+ Test(result == KErrNone);
+
+ //*************************************************
+ //Test - Basic API
+ Test.Next(_L("Basic Api 8"));
+ TRAP(result,mData->SetVariantL(KXmlUtNullString));
+
+ Test(result == KErrNone);
+ Test(mData->Variant().Compare(KXmlUtNullString)==0);
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 1"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ // Now returns lowest uid Symbian parser
+ Test(mData->ResolveL(systemPlugins) == KXmlUtP1Uid);
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 2"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ // Now returns lowest uid Symbian parser
+ Test(KXmlUtP1Uid == mData->ResolveL(systemPlugins));
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 3"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ Test(KXmlUtP6Uid == mData->ResolveL(systemPlugins));
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 4"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ Test(KXmlUtP6Uid == mData->ResolveL(systemPlugins));
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 5"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == Xml::KErrXmlMoreThanOneParserMatched);
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 6"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(ETrue) ;
+ mData->SetMimeTypeL(KXmlUtParserXmlMimeTypeCS);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(resultUid == KNullUid);
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 7"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserXmlMimeTypeCS);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == Xml::KErrXmlMoreThanOneParserMatched);
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 8"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtNonExistantString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KNullUid);
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 9"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeType);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ // Now returns lowest uid Symbian parser
+ Test(resultUid == KXmlUtP4Uid);
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 10"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeType);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ // Now returns lowest uid parser
+ Test(resultUid == KXmlUtP7Uid);
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 11"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeTypeCS);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KNullUid);
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 12"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeTypeCS);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ // Now returns lowest uid parser
+ Test(resultUid == KXmlUtP7Uid);
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 13"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeTypeCS);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == Xml::KErrXmlMoreThanOneParserMatched);
+
+ //*************************************************
+ //Test - Mime type tests
+ Test.Next(_L("Mime type test 14"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtNonExistantString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KNullUid);
+
+
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 1"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ mData->SetVariantL(KXmlUtSymbianString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KXmlUtP6Uid);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 2"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ mData->SetVariantL(KXmlUtSymbianString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KXmlUtP6Uid);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 3"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ mData->SetVariantL(KXmlUtSymbianString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(resultUid == KXmlUtP6Uid);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 4"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeType);
+ mData->SetVariantL(KXmlUtSymbianAdvancedString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KXmlUtP7Uid);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 5"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeTypeCS);
+ mData->SetVariantL(KXmlUtSymbianAdvancedString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KXmlUtP7Uid);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 6"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeTypeCS);
+ mData->SetVariantL(KXmlUtSymbianAdvancedString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KNullUid);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 7"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeType);
+ mData->SetVariantL(KXmlUtExternalString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ // Now returns lowest uid parser
+ Test(resultUid == KXmlUtP9Uid);
+
+ //*************************************************
+ //Test - Mime type and variant tests.
+ Test.Next(_L("Mime type and variant test 8"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeType);
+ mData->SetVariantL(KXmlUtSymbianAdvancedString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ // Now returns lowest uid parser
+ Test(resultUid == KXmlUtP2Uid);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 9"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeType);
+ mData->SetVariantL(KXmlUtExternalString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == Xml::KErrXmlMoreThanOneParserMatched);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 10"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeTypeCS);
+ mData->SetVariantL(KXmlUtExternalV1String);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KNullUid);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 11"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(ETrue);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeTypeCS);
+ mData->SetVariantL(KXmlUtSymbianAdvancedString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KXmlUtP7Uid);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 12"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeTypeCS);
+ mData->SetVariantL(KXmlUtSymbianAdvancedString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == Xml::KErrXmlMoreThanOneParserMatched);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 13"));
+ mData->SetCaseSensitivity(EFalse);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeType);
+ mData->SetVariantL(KXmlUtSymbianAdvancedString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ // Now returns lowest uid parser
+ Test(resultUid == KXmlUtP2Uid);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 14"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(EFalse);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeTypeCS);
+ mData->SetVariantL(KXmlUtSymbianAdvancedString);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KNullUid);
+
+ //*************************************************
+ //Test - Mime type and variant tests
+ Test.Next(_L("Mime type and variant test 15"));
+ mData->SetCaseSensitivity(ETrue);
+ mData->SetRomOnly(EFalse);
+ mData->SetLeaveOnMany(ETrue);
+ mData->SetMimeTypeL(KXmlUtParserWbXmlMimeTypeCS);
+ mData->SetVariantL(KXmlUtExternalV1String);
+ TRAP(result, resultUid = mData->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KNullUid);
+
+
+ //*************************************************
+ //Test - DEF116214 - CMatchData::SortOrder() function behaviour test.
+ Test.Next(_L("CMatchData DEF116214 fix test"));
+ Xml::CMatchData *mData_2 = Xml::CMatchData::NewL();
+ mData_2->SetCaseSensitivity(ETrue);
+ mData_2->SetRomOnly(EFalse);
+ mData_2->SetLeaveOnMany(EFalse);
+ mData_2->SetMimeTypeL(KXmlUtParserMyXmlMimeTypeCS);
+ mData_2->SetVariantL(KXmlUtSymbianStringCS);
+
+ //There are 2 elements which could match this mData_2 criteria,
+ //ResolveL should return the first one (the smallest one). In the old
+ //implementation of CMatchData::SortOrder(), ResolveL() return KXmlUtP10Uid
+ //but after the applied fix ResolveL() returns KXmlUtP11Uid.
+ //The following test should pass.
+ Test(mData_2->ResolveL(systemPlugins) == KXmlUtP11Uid);
+
+ delete mData_2;
+
+ //*************************************************
+ //Test - CMatchData default values
+ Test.Next(_L("CMatchData default test 1"));
+ Xml::CMatchData *newData1 = Xml::CMatchData::NewL();
+ newData1->SetMimeTypeL(KXmlUtParserWbXmlMimeType);
+
+ TRAP(result, resultUid = newData1->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ // Default behaviour became backwards compatible, so Test plugin 4
+ // is returned instead of 2 here because Test Plugin 2's variant is
+ // not an exact match of "Symbian", but 4's is.
+ Test(resultUid == KXmlUtP4Uid);
+ delete newData1;
+
+ //*************************************************
+ //Test - CMatchData default values
+ Test.Next(_L("CMatchData default test 2"));
+ Xml::CMatchData *newData2 = Xml::CMatchData::NewL();
+ newData2->SetMimeTypeL(KXmlUtParserXmlMimeType);
+
+ TRAP(result, resultUid = newData2->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ // Now returns lowest uid Symbian parser
+ Test(resultUid == KXmlUtP1Uid);
+ delete newData2;
+
+ //*************************************************
+ //Test - CMatchData default values
+ Test.Next(_L("CMatchData default test 3"));
+ Xml::CMatchData *newData3 = Xml::CMatchData::NewL();
+ newData3->SetMimeTypeL(KXmlUtParserXmlMimeTypeCS);
+
+ TRAP(result, resultUid = newData3->ResolveL(systemPlugins));
+
+ Test(result == KErrNone);
+ Test(resultUid == KNullUid);
+ delete newData3;
+
+ //*************************************************
+ //Test - CMatchData default values
+ Test.Next(_L("CMatchData default test 4"));
+ Xml::CMatchData *newData4 = Xml::CMatchData::NewL();
+ newData4->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ newData4->SetLeaveOnMany(ETrue);
+
+ TRAP(result, resultUid = newData4->ResolveL(systemPlugins));
+
+ Test(result == Xml::KErrXmlMoreThanOneParserMatched);
+ delete newData4;
+
+ //*************************************************
+ //Test - comparison operator tests
+ Test.Next(_L("Comparison operator tests"));
+ Xml::CMatchData *newData5 = Xml::CMatchData::NewL();
+ Xml::CMatchData *newData6 = Xml::CMatchData::NewL();
+ Test(*newData5 == *newData6);
+
+ newData5->SetCaseSensitivity(EFalse);
+ newData6->SetCaseSensitivity(EFalse);
+ Test(*newData5 == *newData6);
+
+ newData5->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ Test(!(*newData5 == *newData6));
+
+ newData6->SetMimeTypeL(KXmlUtParserXmlMimeTypeCS);
+ Test(*newData5 == *newData6);
+
+ newData5->SetCaseSensitivity(ETrue);
+ Test(!(*newData5 == *newData6));
+
+ newData6->SetCaseSensitivity(ETrue);
+ Test(!(*newData5 == *newData6));
+
+ newData6->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ Test(*newData5 == *newData6);
+
+ newData6->SetLeaveOnMany(ETrue);
+ Test(!(*newData5 == *newData6));
+
+ newData6->SetLeaveOnMany(EFalse);
+ newData6->SetRomOnly(ETrue);
+ Test(!(*newData5 == *newData6));
+
+ newData6->SetRomOnly(EFalse);
+ Test(*newData5 == *newData6);
+
+ newData5->SetVariantL(KXmlUtSymbianString);
+ Test(!(*newData5 == *newData6));
+
+ newData6->SetVariantL(KXmlUtSymbianString);
+ Test(*newData5 == *newData6);
+
+ newData5->SetCaseSensitivity(ETrue);
+ newData6->SetCaseSensitivity(ETrue);
+ Test(*newData5 == *newData6);
+
+ newData6->SetVariantL(KXmlUtSymbianStringCS);
+ Test(!(*newData5 == *newData6));
+
+ newData5->SetCaseSensitivity(EFalse);
+ newData6->SetCaseSensitivity(EFalse);
+ Test(*newData5 == *newData6);
+
+ newData6->SetVariantL(_L8(""));
+ Test(!(*newData5 == *newData6));
+
+ delete newData5;
+ delete newData6;
+
+ //*************************************************
+ //Test - Assignement tests
+ Test.Next(_L("Comparison operator tests"));
+ Xml::CMatchData *newData7 = Xml::CMatchData::NewL();
+ Xml::CMatchData *newData8 = Xml::CMatchData::NewL();
+ Test(*newData7 == *newData8);
+
+ newData8->SetMimeTypeL(KXmlUtParserXmlMimeType);
+ Test(!(*newData7 == *newData8));
+
+ *newData7 = *newData8;
+ Test(*newData7 == *newData8);
+ Test(newData7->MimeType().Compare(KXmlUtParserXmlMimeType()) == 0);
+
+ newData7->SetVariantL(KXmlUtSymbianString);
+ *newData7 = *newData8;
+ Test(*newData7 == *newData8);
+ Test(newData7->Variant() == KNullDesC8);
+
+ delete newData7;
+ delete newData8;
+
+ //*************************************************
+ // Out of memory tests
+ Test.Next(_L("Out of memory tests"));
+ TInt err;
+ Xml::CMatchData* parser9 = NULL;
+
+ // Test NewL
+ for(TInt count=1;;++count)
+ {
+ // Setting Heap failure for OOM test
+ __UHEAP_SETFAIL(RHeap::EDeterministic, count);
+ __UHEAP_MARK;
+
+ TRAP(err, parser9 = Xml::CMatchData::NewL());
+ if(err == KErrNoMemory)
+ {
+ __UHEAP_MARKEND;
+ }
+ else if(err == KErrNone)
+ {
+ delete parser9;
+ __UHEAP_MARKEND;
+ RDebug::Print(_L("The OOM test 1 succeeded at heap failure rate=%d.\n"), count);
+ __UHEAP_RESET;
+ break;
+ }
+ else
+ {
+ __UHEAP_MARKEND;
+ Test(err, KErrNone);
+ }
+ __UHEAP_RESET;
+ }
+
+ TRAP(err, parser9 = Xml::CMatchData::NewL());
+ Test(err == KErrNone);
+
+ //Test SetMimeTypeL
+ for(TInt count=1;;++count)
+ {
+ // Setting Heap failure for OOM test
+ __UHEAP_SETFAIL(RHeap::EDeterministic, count);
+ __UHEAP_MARK;
+
+ TRAP(err, parser9->SetMimeTypeL(KXmlUtParserXmlMimeType()));
+ if(err == KErrNoMemory)
+ {
+ __UHEAP_MARKEND;
+ }
+ else if(err == KErrNone)
+ {
+ RDebug::Print(_L("The OOM test 1 succeeded at heap failure rate=%d.\n"), count);
+ __UHEAP_RESET;
+ break;
+ }
+ else
+ {
+ __UHEAP_MARKEND;
+ Test(err, KErrNone);
+ }
+ __UHEAP_RESET;
+ }
+
+ //Test SetVariantL
+ for(TInt count=1;;++count)
+ {
+ // Setting Heap failure for OOM test
+ __UHEAP_SETFAIL(RHeap::EDeterministic, count);
+ __UHEAP_MARK;
+
+ TRAP(err, parser9->SetVariantL(KXmlUtSymbianString()));
+ if(err == KErrNoMemory)
+ {
+ __UHEAP_MARKEND;
+ }
+ else if(err == KErrNone)
+ {
+ RDebug::Print(_L("The OOM test 1 succeeded at heap failure rate=%d.\n"), count);
+ __UHEAP_RESET;
+ break;
+ }
+ else
+ {
+ __UHEAP_MARKEND;
+ Test(err, KErrNone);
+ }
+ __UHEAP_RESET;
+ }
+ delete parser9;
+
+ //*************************************************
+ //Test cleanup
+ delete mData;
+ CleanSystem();
+ systemPlugins.Close();
+ }
+
+
+
+//***********************************************************************************
+GLDEF_C TInt E32Main()
+ {
+ CTrapCleanup* tc = CTrapCleanup::New();
+ Test(tc != NULL);
+
+
+ TInt err;
+ Test.Start(_L(" @SYMTestCaseID:SYSLIB-XML-UT-3719 CMatchData Tests "));
+ Test.Title();
+
+ __UHEAP_MARK;
+ TRAP(err, ::RunTestsL())
+ Test(err== KErrNone);
+ __UHEAP_MARKEND;
+
+ Test.End();
+ Test.Close();
+
+
+
+ delete tc;
+
+ return(KErrNone);
+
+ }
+
+
+