diff -r 000000000000 -r e35f40988205 xml/xmlfw/test/rtest/tsrc/tu_cmatchdataunittests.cpp --- /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 +#include +#include +#include + +#include +#include + +/* +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); + + } + + +