applayerpluginsandutils/uripermissionservices/Test/tineturilistserverunit.cpp
changeset 0 b16258d2340f
child 12 f21293830889
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/uripermissionservices/Test/tineturilistserverunit.cpp	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,746 @@
+// Copyright (c) 2007-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:
+// ineturilistserverunit.cpp
+// 
+//
+
+#include <ineturilistdef.h>
+
+#include <s32mem.h>
+#include <s32buf.h>
+#include <sqldb.h>
+#include "testutils.h"
+#include "urilistinterface.h"
+#include "urilistinitializer.h"
+#include "ineturiimpl.h"
+#include "ineturilistserver.h"
+#include "uriqueryfilter.h"
+
+// All URIs are tested against the browser servicetype
+
+_LIT(KTitle, "InetUriList Server Unit Tests");
+
+LOCAL_D RTest gTest( KTitle() );
+
+LOCAL_D CTestWrapper* gTestWrapper;
+
+typedef void ( *TTestFunctionL ) ();
+
+#define __LEAVEIFOOM__ if ( err == KErrNoMemory ) \
+				User::Leave ( err );
+
+_LIT8 ( KTestUri, "http://www.symbian.com/developer/index.html" );
+_LIT8 ( KFavouriteName, "Symbian Mobile Operating System" );
+_LIT8 ( KFavouriteName2, "Symbian OS Phones" );
+_LIT8 ( KFavouriteName3, "Symbian developer home" );
+_LIT8 ( KFavouriteName4, "Symbian developer network" );
+_LIT8 ( KFavouriteName5, "Symbian developer network - Tools" );
+_LIT8 ( KFavouriteName6, "Symbian developer network - Library home" );
+_LIT8 ( KFavouriteName7, "Symbian developer network - Academy" );
+_LIT8 ( KFavouriteName8, "Symbian developer network - Library" );
+_LIT8 ( KFavouriteName9, "Symbian wiki" );
+_LIT8 ( KFavouriteName10, "All about Symbian - getting started" );
+
+// For doamain search
+_LIT8 ( KTestUri2, "http://www.symbian.com/phones/index.html" );
+_LIT8 ( KTestUri3, "http://developer.symbian.com/home.action" );
+
+// For domain & path search
+_LIT8 ( KTestUri4, "http://developer.symbian.com/main/getstarted/index.jsp" );
+_LIT8 ( KTestUri5, "http://developer.symbian.com/main/tools/index.jsp" );
+_LIT8 ( KTestUri6, "http://developer.symbian.com/main/oslibrary/index.jsp" );
+_LIT8 ( KTestUri7, "http://developer.symbian.com/main/academy/symbian_academy/curriculum/index.jsp" );
+_LIT8 ( KTestUri8, "http://developer.symbian.com/main/oslibrary/" );
+_LIT8 ( KTestUri9, "http://wiki.symbian.com/mypage.html" );
+_LIT8 ( KTestUri10, "http://www.allaboutsymbian.com/main/getstarted/index.jsp" );
+
+
+// Unknown URI. should return KErrUriNotFound
+_LIT8 ( KUnknownUri, "http://www.symbian.com/symbianos/index.html" );
+
+//Test Uris For QueryTld functionality
+_LIT8 ( KTldTestUri1, "http://www.yahoo.test/index.html" );	//Whitelisted in TLD 'test'
+_LIT8 ( KTldTestUri2, "http://www.yaqQzz.test/index.html" );//Blacklisted in TLD 'test'
+_LIT8 ( KTldTestUri3, "http://www.yahoo.twt/index.html" );	//Whitelisted in TLD 'twt'
+_LIT8 ( KTldTestUri4, "http://www.yaqQzz.twt/index.html" );	//No Blacklist data for TLD 'twt'
+_LIT8 ( KTldTestUri5, "http://www.yahoo.tbl/index.html" );	//Whitelisted in TLD 'tbl', No Whitelist data for TLD 'twt' 
+_LIT8 ( KTldTestUri6, "http://www.yaqQzz.tbl/index.html" );	//Blacklisted in TLD 'tbl', No Whitelist data for TLD 'twt' 		
+_LIT8 ( KTldTestUri7, "http://www.yahoo.tza/index.html" );	//TLD does not exist
+_LIT8 ( KTldTestUri8, "http://www.yahoo.tzz/index.html" );	//TLD does not exist
+
+// Added For DEF141504 
+_LIT8 ( KTldTestUri9, "www.yahoo.test/index.html" ); //Whitelisted in TLD 'test'
+_LIT8 ( KTldTestUri10, "www.yaqQzz.test/index.html" );//Blacklisted in TLD 'test'
+_LIT8 ( KTldTestUri11, "www.yahoo.tzz/index.html" );  //TLD does not exist
+CUriListInterface *gListInterface;
+TBool gNormalRun = ETrue;
+
+using namespace InetUriList;
+
+LOCAL_C void Print ( const TDesC& aStmt )
+	{
+	if ( gNormalRun )
+		gTestWrapper->Next ( aStmt );
+	}
+
+LOCAL_C void DeleteDatabase ()
+	{
+	_LIT( KDatabaseName, "[A00026FF]URIList.dat" );
+	RSqlDatabase::Delete ( KDatabaseName() );		
+	}
+
+LOCAL_C void TestUriListInitializerL ()
+	{
+	gListInterface = CUriListInterface::NewL ();
+//	delete listInterface;
+	}
+
+LOCAL_C CInetUriImpl* CreateUriL ( const TDesC8& aUri, TListType aListType, const TDesC8& aFavouriteName )
+	{
+	CInetUriImpl* uri = CInetUriImpl::NewL ( aUri, EBrowser, aListType );
+	CleanupStack::PushL ( uri );
+	uri->Properties().SetFavouriteNameL ( aFavouriteName );	
+	CleanupStack::Pop ();
+	return uri;	
+	}
+
+LOCAL_C void AddTestL ( CInetUriImpl* aUri, TInt aExpectedError )
+	{
+	TRAPD ( err, gListInterface->InsertL ( *aUri ) );		
+	__LEAVEIFOOM__
+	
+	gTestWrapper->TEST ( err == aExpectedError );
+	}
+
+LOCAL_C void UpdateTestL ( CInetUriImpl* aUri, TInt aExpectedError )
+	{
+	TRAPD ( err, gListInterface->UpdateUriL ( aUri->Properties().PropId(), aUri->Properties().ListType(), aUri->Properties().FavouriteName() ) );
+	__LEAVEIFOOM__
+	
+	gTestWrapper->TEST ( err == aExpectedError );	
+	}
+
+LOCAL_C void RemoveTestL ( CInetUriImpl* aUri, TInt aExpectedError )
+	{
+	TRAPD ( err, gListInterface->RemoveUriL ( aUri->UriId(), aUri->Properties().PropId() ) );
+	__LEAVEIFOOM__
+	
+	gTestWrapper->TEST ( err == aExpectedError );	
+		
+	}
+
+LOCAL_C void GetListTypeTestL ( const TDesC8& aUri, TInt aExpectedError )
+	{
+	TListType lt = EBlackList;
+	TRAPD ( err, lt = gListInterface->GetListTypeL ( aUri, EBrowser ) );
+	__LEAVEIFOOM__
+	gTestWrapper->TEST ( err == aExpectedError );
+	if ( aExpectedError == KErrNone )
+		gTestWrapper->TEST ( lt == EWhiteList );			
+	}
+
+LOCAL_C CInetUriImpl* OpenUriL ( const TDesC8& aUri )
+	{
+	TQueryArgs args ( EBrowser, EExact );
+	CUriQueryFilter* queryFilter = NULL;
+	TRAPD ( err, queryFilter = gListInterface->QueryWithUriL ( aUri, args ) );
+	__LEAVEIFOOM__
+	
+	gTestWrapper->TEST ( err == KErrNone );
+	CleanupStack::PushL ( queryFilter );	
+	CUriListStream* listStream = CUriListStream::NewL ( queryFilter );
+	CleanupStack::Pop (); // queryFilter;
+	CleanupStack::PushL ( listStream );
+	CBufFlat* buffer = CBufFlat::NewL ( KIpcDataSize );
+	CleanupStack::PushL ( buffer );
+	buffer->ExpandL ( 0, KIpcDataSize );
+	TPtrC8 ptr;
+	TInt count = listStream->WriteUriListL ( ptr );
+	if ( count <= 0 )
+		{
+		User::Leave ( KErrUriNotFound );
+		}
+	buffer->Ptr(0).Copy ( ptr );
+	
+	RBufReadStream readStream( *buffer );
+	CleanupClosePushL ( readStream );
+	CInetUriImpl* uri = CInetUriImpl::NewL ();
+	CleanupStack::PushL ( uri );
+	uri->UnpackL ( readStream );
+	CleanupStack::Pop (); // uri
+	CleanupStack::PopAndDestroy (3); // buffer, listStream
+	return uri;	
+	}
+
+LOCAL_C void CountUriL ()
+	{
+	gTestWrapper->TEST ( gListInterface->CountUriL ( InetUriList::EBrowser, InetUriList::EWhiteList ) == 1 );
+	}
+	
+LOCAL_C void MatchUris ( const CInetUriImpl& aUri, const CInetUriImpl& aUri2 )
+	{
+	gTestWrapper->TEST ( aUri.UriDes().Compare( aUri2.UriDes() ) == 0 );
+	CInetUriProperties& properties = aUri.Properties();
+	CInetUriProperties& properties2 = aUri2.Properties();
+	gTestWrapper->TEST ( properties.Permission() == properties2.Permission() );
+	gTestWrapper->TEST ( properties.ListType() == properties2.ListType() );
+	gTestWrapper->TEST ( properties.ServiceType() == properties2.ServiceType() );
+	gTestWrapper->TEST ( properties.FavouriteName().Compare( properties2.FavouriteName() ) == 0 );
+	}
+
+LOCAL_C void DoStorageTestsL ()
+	{	
+	DeleteDatabase ();
+	gListInterface = CUriListInterface::NewL ();
+	CleanupStack::PushL ( gListInterface );
+	
+	Print ( _L( "Doing URI add tests" ) );
+	CInetUriImpl* uri = CreateUriL ( KTestUri(), EWhiteList, KFavouriteName() );
+	CleanupStack::PushL ( uri );
+	AddTestL ( uri, KErrNone );
+	AddTestL ( uri, KErrUriAlreadyExists );	
+	
+	CInetUriImpl* uri2 = NULL;
+	TRAPD ( err, uri2 = OpenUriL ( KTestUri() ) );
+	__LEAVEIFOOM__
+	gTestWrapper->TEST ( err == KErrNone );
+	CleanupStack::PushL ( uri2 );
+	MatchUris ( *uri, *uri2 );
+	
+	Print ( _L( "Doing URI update tests" ) );	
+	// Update tests. Update the favouritename
+	uri2->Properties().SetFavouriteNameL ( KFavouriteName2() );
+		
+	UpdateTestL	( uri2, KErrNone );
+	CInetUriImpl* uri3 = NULL;
+
+	TRAP ( err, uri3 = OpenUriL ( KTestUri() ) );
+	__LEAVEIFOOM__	
+	gTestWrapper->TEST ( err == KErrNone );
+	
+	CleanupStack::PushL ( uri3 );
+	MatchUris ( *uri3, *uri2 );
+	
+	Print ( _L( "Doing retrieval of URI list type tests" ) );	
+	GetListTypeTestL ( KTestUri(), KErrNone );
+	GetListTypeTestL ( KUnknownUri(), KErrUriNotFound );
+	
+	Print ( _L( "Doing URI remove tests" ) );	
+	RemoveTestL ( uri3, KErrNone );
+	CInetUriImpl* uri4 = NULL;
+	TRAP ( err, uri4 = OpenUriL ( KTestUri() ) );
+	__LEAVEIFOOM__
+	gTestWrapper->TEST ( err == KErrUriNotFound );
+	
+	CleanupStack::PopAndDestroy (4); //uri, uri2, uri3, gListInterface		
+	}
+
+LOCAL_C void AddMoreUrisTestL ()
+	{	
+	gListInterface = CUriListInterface::NewL ();
+	CleanupStack::PushL ( gListInterface );
+	
+	CInetUriImpl* uri = CreateUriL ( KTestUri(), EWhiteList, KFavouriteName() );
+	CleanupStack::PushL ( uri );
+	CInetUriImpl* uri2 = CreateUriL ( KTestUri2(), EWhiteList, KFavouriteName2() );
+	CleanupStack::PushL ( uri2 );
+	CInetUriImpl* uri3 = CreateUriL ( KTestUri3(), EWhiteList, KFavouriteName3() );
+	CleanupStack::PushL ( uri3 );
+	CInetUriImpl* uri4 = CreateUriL ( KTestUri4(), EWhiteList, KFavouriteName4() );
+	CleanupStack::PushL ( uri4 );
+	CInetUriImpl* uri5 = CreateUriL ( KTestUri5(), EWhiteList, KFavouriteName5() );
+	CleanupStack::PushL ( uri5 );
+	CInetUriImpl* uri6 = CreateUriL ( KTestUri6(), EWhiteList, KFavouriteName6() );
+	CleanupStack::PushL ( uri6 );
+	CInetUriImpl* uri7 = CreateUriL ( KTestUri7(), EWhiteList, KFavouriteName7() );
+	CleanupStack::PushL ( uri7 );
+	CInetUriImpl* uri8 = CreateUriL ( KTestUri8(), EWhiteList, KFavouriteName8() );
+	CleanupStack::PushL ( uri8 );
+	CInetUriImpl* uri9 = CreateUriL ( KTestUri9(), EWhiteList, KFavouriteName9() );
+	CleanupStack::PushL ( uri9 );
+	CInetUriImpl* uri10 = CreateUriL ( KTestUri10(), EWhiteList, KFavouriteName10() );
+	CleanupStack::PushL ( uri10 );
+
+	
+	AddTestL ( uri, KErrNone );
+	AddTestL ( uri2, KErrNone );
+	AddTestL ( uri3, KErrNone );
+	AddTestL ( uri4, KErrNone );
+	AddTestL ( uri5, KErrNone );
+	AddTestL ( uri6, KErrNone );
+	AddTestL ( uri7, KErrNone );
+	AddTestL ( uri8, KErrNone );
+	AddTestL ( uri10, KErrNone );
+	AddTestL ( uri9, KErrNone );
+			
+	CleanupStack::PopAndDestroy ( 11 ); // gListInterface, uri1 - uri11	
+ 	}
+
+typedef CArrayFixFlat <CInetUriImpl*> TResultList;
+const TInt KMaxArraySize = 20;
+static void ResetAndDestroyResultList ( TAny* aPtr )
+	{
+	TResultList* resultList = ( TResultList* )aPtr;
+	// Delete all items added. Otherwise these items will not get deleted and there will
+	// be a memory leak.
+	for ( TInt i = 0; i < resultList->Count(); ++i )
+		delete resultList->At(i);
+
+	delete resultList;
+	}
+
+
+LOCAL_C TResultList* RetrieveQueryResultsLC ( CUriListStream& aListStream )
+	{
+	TResultList* resultsArray = new ( ELeave ) TResultList ( KMaxArraySize );
+	CleanupStack::PushL ( TCleanupItem ( ResetAndDestroyResultList, resultsArray ) );
+	CBufFlat* buffer = CBufFlat::NewL ( KIpcDataSize );
+	CleanupStack::PushL ( buffer );
+	buffer->ExpandL ( 0, KIpcDataSize );
+	RBufReadStream readStream( *buffer );
+	CleanupClosePushL ( readStream );
+	TBool bContinue = ETrue;
+	do
+	{
+		TPtrC8 ptr;
+		TInt totalRecords = aListStream.WriteUriListL ( ptr );
+		if ( totalRecords > 0 )
+			{
+			buffer->Ptr(0).Copy ( ptr );				
+			for ( TInt i = 0; i < totalRecords; ++i )
+				{
+				CInetUriImpl* uri = CInetUriImpl::NewL ();
+				CleanupStack::PushL ( uri );
+				uri->UnpackL ( readStream );
+				// Append to the resutls array				
+				resultsArray->AppendL ( uri );
+				CleanupStack::Pop (); // uri
+				MStreamBuf* srcStream = readStream.Source ();
+				srcStream->SeekL ( MStreamBuf::ERead, EStreamBeginning, 0 );
+				}
+			}
+			else
+				{
+				bContinue = EFalse;					
+				}
+	}while ( bContinue );
+	CleanupStack::PopAndDestroy ( 2 ); //buffer, readStream
+	return resultsArray;
+	}
+
+LOCAL_C void DoMatchResultArray ( const TResultList& aResult, const TResultList& aResult2 )
+	{
+	gTestWrapper->TEST ( aResult.Count() == aResult2.Count() );
+
+	for ( TInt i = 0; i < aResult.Count(); ++i )	
+		{
+		CInetUriImpl* uri = aResult.At(i);
+		for ( TInt j = 0; j < aResult2.Count(); ++j )
+			{
+			CInetUriImpl* uri2 = aResult2.At(j);
+			if ( uri->Properties().PropId() == uri2->Properties().PropId() )
+				{
+				MatchUris ( *uri, *uri2 );
+				break;
+				}
+			}
+		}
+	}
+
+LOCAL_C void DoSearchL ( const TDesC8& aUri, TURIMatch aMatch, const TResultList& aExpectedResults )
+	{
+	TQueryArgs args ( EBrowser, aMatch );
+	CUriQueryFilter* queryFilter = gListInterface->QueryWithUriL ( aUri, args );
+	CleanupStack::PushL ( queryFilter );
+	CUriListStream* listStream = CUriListStream::NewL ( queryFilter );
+	CleanupStack::Pop (); // queryFilter
+	CleanupStack::PushL ( listStream );
+	TResultList* resultArray = RetrieveQueryResultsLC (*listStream);
+	DoMatchResultArray ( aExpectedResults, *resultArray );
+	CleanupStack::PopAndDestroy ( 2 ); // listStream, resultArray
+	}
+
+/**
+Tests Fetching Policy data for given Uri
+*/
+LOCAL_C void DoQueryPolcydataL (const TDesC8& aUri, TPolicyQueryArgs aArgs )
+	{
+	__UHEAP_MARK;
+	gListInterface = CUriListInterface::NewL ();
+	CleanupStack::PushL ( gListInterface );
+	TInt error(KErrNone);
+	HBufC8* policyData(NULL);
+	TRAP( error, policyData = gListInterface->QueryTldInfoL (aUri, aArgs ) );
+	delete policyData;
+	gTestWrapper->TEST ( ETrue );
+	CleanupStack::PopAndDestroy ( gListInterface );
+	__UHEAP_MARKEND;
+	}
+
+/**
+Tests Fetching List type of given Uri
+*/
+LOCAL_C void DoQueryTldListInfoL ( const TDesC8& aUri )
+	{
+	gListInterface = CUriListInterface::NewL ();
+	CleanupStack::PushL ( gListInterface );
+	TInt error(KErrNone);
+	InetUriList::TListType listType(InetUriList::EBlackList);
+	TRAP( error, listType = gListInterface->GetHostTypeL ( aUri ) );
+	gTestWrapper->TEST ( ETrue );
+	CleanupStack::PopAndDestroy ( gListInterface );
+	}
+	
+/**
+Tests Fetching List type of given Uri
+*/
+LOCAL_C void DoPolicyLengthL ( const TDesC8& aUri, TPolicyQueryArgs aArgs )
+	{
+	TInt error(KErrNone);
+	TInt length(0);
+	gListInterface = CUriListInterface::NewL ();
+	CleanupStack::PushL ( gListInterface );
+	TRAP( error, length = gListInterface->PolicyDataLengthL( aUri, aArgs ) );
+	gTestWrapper->TEST ( ETrue );
+	CleanupStack::PopAndDestroy ( gListInterface );
+	}
+
+LOCAL_C void DoQueryPolicyL()
+	{
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri1 ( KTldTestUri1() );
+	TPolicyQueryArgs queryArg1( &tlduri1, EWhiteList, EPolicyCharSet);
+	DoQueryPolcydataL(tlduri1, queryArg1 );
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch BlackList data") );
+	const TPtrC8 tlduri2 ( KTldTestUri2() );
+	TPolicyQueryArgs queryArg2( &tlduri2, EBlackList, EPolicyCharSet);
+	DoQueryPolcydataL(tlduri2, queryArg2);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri3 ( KTldTestUri3() );
+	TPolicyQueryArgs queryArg3( &tlduri3, EWhiteList, EPolicyCharSet);
+	DoQueryPolcydataL( tlduri3, queryArg3);
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch BlackList data") );
+	const TPtrC8 tlduri4 ( KTldTestUri4() );
+	TPolicyQueryArgs queryArg4( &tlduri4, EBlackList, EPolicyCharSet);
+	DoQueryPolcydataL( tlduri4, queryArg4);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri5 ( KTldTestUri5() );
+	TPolicyQueryArgs queryArg5( &tlduri5, EWhiteList, EPolicyCharSet);
+	DoQueryPolcydataL(tlduri5, queryArg5);
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch BlackList data") );
+	const TPtrC8 tlduri6 ( KTldTestUri6() );
+	TPolicyQueryArgs queryArg6( &tlduri6, EBlackList, EPolicyCharSet);
+	DoQueryPolcydataL(tlduri6, queryArg6);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri7 ( KTldTestUri7() );
+	TPolicyQueryArgs queryArg7( &tlduri7, EWhiteList, EPolicyCharSet);
+	DoQueryPolcydataL(tlduri7, queryArg7);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch BlackList data") );
+	const TPtrC8 tlduri8 ( KTldTestUri7() );
+	TPolicyQueryArgs queryArg8( &tlduri8, EBlackList, EPolicyCharSet);
+	DoQueryPolcydataL(tlduri8, queryArg8);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri9 ( KTldTestUri8() );
+	TPolicyQueryArgs queryArg9( &tlduri9, EWhiteList, EPolicyCharSet);
+	DoQueryPolcydataL(tlduri9, queryArg9);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch BlackList data") );
+	const TPtrC8 tlduri10 ( KTldTestUri8() );
+	TPolicyQueryArgs queryArg10( &tlduri10, EBlackList, EPolicyCharSet);
+	DoQueryPolcydataL(tlduri10, queryArg10);
+	
+	// Addede to Test DEF141504
+	
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch BlackList data") );
+	    const TPtrC8 tlduri11 ( KTldTestUri9() );
+	    TPolicyQueryArgs queryArg11( &tlduri11, EBlackList, EPolicyCharSet);
+	    DoQueryPolcydataL(tlduri11, queryArg11);
+	    
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch BlackList data") );
+	     const TPtrC8 tlduri12 ( KTldTestUri10() );
+	     TPolicyQueryArgs queryArg12( &tlduri12, EBlackList, EPolicyCharSet);
+	     DoQueryPolcydataL(tlduri12, queryArg12);
+	
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch BlackList data") );
+	     const TPtrC8 tlduri14 ( KTldTestUri11() );
+	     TPolicyQueryArgs queryArg14( &tlduri14, EBlackList, EPolicyCharSet);
+	     DoQueryPolcydataL(tlduri14, queryArg14);
+	}
+
+LOCAL_C void DoQueryListL ()
+	{
+	Print( _L ( "Query TLD URIs with Uri and TldQueryType -- Gets White/Black list Host") );
+	DoQueryTldListInfoL(KTldTestUri1());
+
+	
+	Print( _L ( "Query TLD URIs with Uri and TldQueryType -- Gets White/Black list Host") );
+	DoQueryTldListInfoL( KTldTestUri2() );
+	
+		
+	Print( _L ( "Query TLD URIs with Uri and TldQueryType -- Gets White/Black list Host") );
+	DoQueryTldListInfoL( KTldTestUri3() );
+	
+		
+	Print( _L ( "Query TLD URIs with Uri and TldQueryType -- Gets White/Black list Host") );
+	DoQueryTldListInfoL( KTldTestUri4() );
+	
+		
+	Print( _L ( "Query TLD URIs with Uri and TldQueryType -- Gets White/Black list Host") );
+	DoQueryTldListInfoL( KTldTestUri5() );
+	
+		
+	Print( _L ( "Query TLD URIs with Uri and TldQueryType -- Gets White/Black list Host") );
+	DoQueryTldListInfoL( KTldTestUri6() );
+	
+		
+	Print( _L ( "Query TLD URIs with Uri and TldQueryType -- Gets White/Black list Host") );
+	DoQueryTldListInfoL( KTldTestUri7() );
+	
+		
+	Print( _L ( "Query TLD URIs with Uri and TldQueryType -- Gets White/Black list Host") );
+	DoQueryTldListInfoL( KTldTestUri8() );
+	}
+
+LOCAL_C void DoPolicyDataLengthL ()
+	{
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri1 ( KTldTestUri1() );
+	TPolicyQueryArgs queryArg1( &tlduri1, EWhiteList, EPolicyCharSet);
+	DoPolicyLengthL( tlduri1, queryArg1 );
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri2 ( KTldTestUri2() );
+	TPolicyQueryArgs queryArg2( &tlduri2, EBlackList, EPolicyCharSet);
+	DoPolicyLengthL(tlduri2, queryArg2);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri3 ( KTldTestUri3() );
+	TPolicyQueryArgs queryArg3( &tlduri3, EWhiteList, EPolicyCharSet);
+	DoPolicyLengthL(tlduri3, queryArg3);
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri4 ( KTldTestUri4() );
+	TPolicyQueryArgs queryArg4( &tlduri4, EBlackList, EPolicyCharSet);
+	DoPolicyLengthL(tlduri4, queryArg4);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri5 ( KTldTestUri5() );
+	TPolicyQueryArgs queryArg5( &tlduri5, EWhiteList, EPolicyCharSet);
+	DoPolicyLengthL(tlduri5, queryArg5);
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri6 ( KTldTestUri6() );
+	TPolicyQueryArgs queryArg6( &tlduri6, EBlackList, EPolicyCharSet);
+	DoPolicyLengthL(tlduri6, queryArg6);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri7 ( KTldTestUri7() );
+	TPolicyQueryArgs queryArg7( &tlduri7, EWhiteList, EPolicyCharSet);
+	DoPolicyLengthL(tlduri7, queryArg7);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri8 ( KTldTestUri7() );
+	TPolicyQueryArgs queryArg8( &tlduri8, EBlackList, EPolicyCharSet);
+	DoPolicyLengthL(tlduri8, queryArg8);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri9 ( KTldTestUri8() );
+	TPolicyQueryArgs queryArg9( &tlduri9, EWhiteList, EPolicyCharSet);
+	DoPolicyLengthL(tlduri9, queryArg9);
+	
+		
+	Print(  _L ( "Query TLD URIs with Uri, ListType and TldQueryType -- Fetch WhiteList data") );
+	const TPtrC8 tlduri10 ( KTldTestUri8() );
+	TPolicyQueryArgs queryArg10( &tlduri10, EBlackList, EPolicyCharSet);
+	DoPolicyLengthL(tlduri10, queryArg10);
+	}
+	
+LOCAL_C void DoQueryTLDTestsL ()
+	{
+	DoQueryPolicyL();
+	DoQueryListL();
+	DoPolicyDataLengthL();	
+	}
+	
+LOCAL_C void DoQueryTestsL ()
+	{
+	// Query tests performed 
+	// For domain search:
+	// A URI with http://www.symbian.com/ should return KTestUri - KTestUri10
+	// For path search:
+	// Perfix path: http://developer.symbian.com/main should return KTestUri4 - KTestUri8 & KTestUri11 ( 6 URIs )
+	// Suffix path: http://developer.symbian.com/index.jsp should return KTestUri4 - KTestUri7 & KTestUri10  ( 5 URIs )
+	// Exact path: http://developer.symbian.com/main/getstarted/index.jsp should return KTestUri4 & KTestUri10 ( 2 URIs )
+
+	_LIT8 ( KDomainSearchUri, "http://www.symbian.com/" );
+	_LIT8 ( KPrefixPathSearchUri, "http://developer.symbian.com/main" );
+	_LIT8 ( KSuffixPathSearchUri, "http://developer.symbian.com/index.jsp" );
+	_LIT8 ( KExactPathSearchUri, "http://developer.symbian.com/main/getstarted/index.jsp" );
+	
+	gListInterface = CUriListInterface::NewL ();
+	CleanupStack::PushL ( gListInterface );
+	
+	TInt count = gListInterface->CountUriL ( EBrowser, EWhiteList );
+	
+	CInetUriImpl* uri = OpenUriL ( KTestUri() );
+	CleanupStack::PushL ( uri );
+	CInetUriImpl* uri2 = OpenUriL ( KTestUri2() );
+	CleanupStack::PushL ( uri2 );
+	CInetUriImpl* uri3 = OpenUriL ( KTestUri3() );
+	CleanupStack::PushL ( uri3 );
+	CInetUriImpl* uri4 = OpenUriL ( KTestUri4() );
+	CleanupStack::PushL ( uri4 );
+	CInetUriImpl* uri5 = OpenUriL ( KTestUri5() );
+	CleanupStack::PushL ( uri5 );
+	CInetUriImpl* uri6 = OpenUriL ( KTestUri6() );
+	CleanupStack::PushL ( uri6 );
+	CInetUriImpl* uri7 = OpenUriL ( KTestUri7() );
+	CleanupStack::PushL ( uri7 );
+	CInetUriImpl* uri8 = OpenUriL ( KTestUri8() );
+	CleanupStack::PushL ( uri8 );
+	CInetUriImpl* uri9 = OpenUriL ( KTestUri9() );
+	CleanupStack::PushL ( uri9 );
+	CInetUriImpl* uri10 = OpenUriL ( KTestUri10() );
+	CleanupStack::PushL ( uri10 );
+	
+	TResultList* domainSearchResults = new ( ELeave )TResultList ( KMaxArraySize );
+	CleanupStack::PushL ( domainSearchResults );
+	domainSearchResults->AppendL ( uri );
+	domainSearchResults->AppendL ( uri2 );
+	domainSearchResults->AppendL ( uri3 );
+	domainSearchResults->AppendL ( uri4 );			
+	domainSearchResults->AppendL ( uri5 );
+	domainSearchResults->AppendL ( uri6 );
+	domainSearchResults->AppendL ( uri7 );
+	domainSearchResults->AppendL ( uri8 );			
+	domainSearchResults->AppendL ( uri9 );
+
+	TResultList* prefixPathSearchResults = new ( ELeave )TResultList ( KMaxArraySize );;
+	CleanupStack::PushL ( prefixPathSearchResults );
+	prefixPathSearchResults->AppendL ( uri4 );			
+	prefixPathSearchResults->AppendL ( uri5 );
+	prefixPathSearchResults->AppendL ( uri6 );
+	prefixPathSearchResults->AppendL ( uri7 );
+	prefixPathSearchResults->AppendL ( uri8 );			
+	prefixPathSearchResults->AppendL ( uri10 );
+
+	TResultList* suffixPathSearchResults = new ( ELeave )TResultList ( KMaxArraySize );;
+	CleanupStack::PushL ( suffixPathSearchResults );
+	suffixPathSearchResults->AppendL ( uri4 );			
+	suffixPathSearchResults->AppendL ( uri5 );
+	suffixPathSearchResults->AppendL ( uri6 );
+	suffixPathSearchResults->AppendL ( uri7 );
+	suffixPathSearchResults->AppendL ( uri10 );
+	
+	TResultList* exactPathSearchResults = new ( ELeave )TResultList ( KMaxArraySize );;
+	CleanupStack::PushL ( exactPathSearchResults );	
+	exactPathSearchResults->AppendL ( uri4 );
+	exactPathSearchResults->AppendL ( uri10 );
+ 	Print( _L( "@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-SERVERUNIT-0005 Doing domain search test" ) );	
+	DoSearchL ( KDomainSearchUri(), EDomain, *domainSearchResults );
+  	Print( _L( "@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-SERVERUNIT-0006 Doing partial prefix path search test" ) );		
+	DoSearchL ( KPrefixPathSearchUri(), EPartialPrefixPath, *prefixPathSearchResults );
+	Print( _L( "@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-SERVERUNIT-0007 Doing partial suffix path search test" ) );			
+	DoSearchL ( KSuffixPathSearchUri(), EPartialSuffixPath, *suffixPathSearchResults );
+	Print( _L( "@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-SERVERUNIT-0008 Doing exact path search test" ) );			
+	DoSearchL ( KExactPathSearchUri(), EExactPath, *exactPathSearchResults );
+	CleanupStack::PopAndDestroy ( 4 );  // domainSearchResults, prefixPathSearchResults, suffixPathSearchResults, exactPathSearchResults
+	CleanupStack::PopAndDestroy ( 11); 	 // uris & gListInterface	
+	}
+
+
+LOCAL_C void DoOomTestsL ( TTestFunctionL aTestFunction )
+	{
+	TInt err = KErrNoMemory;
+	TInt failAt = 0;
+
+	while( err != KErrNone )
+		{
+   		gTestWrapper->Tester().Printf( _L( "Test step: %d\n" ), failAt );
+    	__UHEAP_RESET;
+		__UHEAP_MARK;
+		__UHEAP_SETFAIL( RHeap::EDeterministic, failAt ); 
+		TRAP( err, ( aTestFunction )() );
+		__UHEAP_MARKEND;
+		__UHEAP_RESET;			
+		++failAt;
+		}
+    gTestWrapper->Tester().Printf( _L( "End of OOM testing Total iterations: %d" ), failAt );		
+	}
+
+
+LOCAL_C void StartTestsL ()
+	{	
+	// Run normal tests
+	gTestWrapper->Next (_L( "@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-SERVERUNIT-0001 Doing storage tests" ));
+	DoStorageTestsL ();
+	gTestWrapper->Next (_L( "@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-SERVERUNIT-0002 Adding URIs for query testing" ));	
+	AddMoreUrisTestL ();
+	gTestWrapper->Tester().Printf (_L( "@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-SERVERUNIT-0003 Starting query tests" ));	
+	DoQueryTestsL ();
+	gTestWrapper->Tester().Printf (_L( "@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-SERVERUNIT-0004 Starting query TLD tests" ));
+	DoQueryTLDTestsL();
+
+	// Running OOM tests
+	gNormalRun = EFalse;
+	gTestWrapper->Next (_L( "Starting OOM testing" ));
+	DoOomTestsL ( DoStorageTestsL );
+	AddMoreUrisTestL ();
+	DoOomTestsL ( DoQueryTestsL );
+	DoOomTestsL ( DoQueryTLDTestsL );
+	}
+
+LOCAL_C void DoTestsL ()
+	{	
+	gTestWrapper = CTestWrapper::NewLC(gTest);
+	gTestWrapper->Start(_L("URI List Server tests"));
+
+	TRAPD ( err, StartTestsL () );
+	gTestWrapper->TESTE( err==KErrNone, err );
+	
+	gTestWrapper->End();
+	CleanupStack::PopAndDestroy(gTestWrapper);
+	}
+
+
+GLDEF_C TInt E32Main()
+	{
+	__UHEAP_MARK;
+	CTrapCleanup* tc = CTrapCleanup::New();
+	TRAPD( err, DoTestsL() );
+	if ( err != KErrNone )
+		User::Panic( _L( "Test failed with error code: %i" ), err );
+	delete tc;
+	__UHEAP_MARKEND;
+	return KErrNone;
+	}