messagingfw/msgurlhandler/test/basic/src/MailtoSchemeHandlerUnitTest.cpp
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgurlhandler/test/basic/src/MailtoSchemeHandlerUnitTest.cpp	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,1240 @@
+// Copyright (c) 1997-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:
+// The unit test class implementations for the CMailtoSchemeHandler class.
+// 
+//
+
+/**
+ @file
+ @SYMCreationDate Created : 24/05/01 15:57:45
+*/
+
+#include "MailtoSchemeHandlerUnitTest.h"
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerCreateAndDestroyUnitTest,"CMailtoSchemeHandler_CreateAndDestroy_UnitTest");
+
+CMailtoSchemeHandler_CreateAndDestroy_UnitTest* CMailtoSchemeHandler_CreateAndDestroy_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_CreateAndDestroy_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_CreateAndDestroy_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_CreateAndDestroy_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+		delete iCtorValidator;
+	//	delete iCreateAndDestroyValidator;
+		delete iDtorValidator;
+	 
+	return error;
+	}
+
+inline CMailtoSchemeHandler_CreateAndDestroy_UnitTest::~CMailtoSchemeHandler_CreateAndDestroy_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+		delete iCtorValidator;
+	//	delete iCreateAndDestroyValidator;
+		delete iDtorValidator;
+	
+	}
+
+inline CMailtoSchemeHandler_CreateAndDestroy_UnitTest::CMailtoSchemeHandler_CreateAndDestroy_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerCreateAndDestroyUnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_CreateAndDestroy_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+		iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+		AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+//		iCreateAndDestroyValidator = new(ELeave) TMailtoSchemeHandler_CreateAndDestroy_TransitionValidator(*iUTContext);
+//		AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+		iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+		AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+	
+	}
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest1UnitTest,"CMailtoSchemeHandler_ParseUrlTest1_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest1_UnitTest* CMailtoSchemeHandler_ParseUrlTest1_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest1_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest1_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest1_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest1Validator;
+	delete iDtorValidator;
+	 
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest1_UnitTest::~CMailtoSchemeHandler_ParseUrlTest1_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest1Validator;
+	delete iDtorValidator;
+	
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest1_UnitTest::CMailtoSchemeHandler_ParseUrlTest1_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest1UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest1_UnitTest::ConstructL()
+	{
+
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+	
+	_LIT(KUrl1, "mailto: shahadat@symbian , david@symbian ");
+	//_LIT(KUrl1, "mailto: ");
+	iUTContext->iUrl = &KUrl1(); 
+
+	_LIT(KTo1, "shahadat@symbian");
+	_LIT(KTo2, "david@symbian");
+
+	iUTContext->iArray.Append(KTo1());
+	iUTContext->iArray.Append(KTo2());
+	
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest1Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest1_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	//AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlAndSendL_Transition(*iUTContext,*iParseUrlTest1Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest1Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+	}
+
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest2UnitTest,"CMailtoSchemeHandler_ParseUrlTest2_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest2_UnitTest* CMailtoSchemeHandler_ParseUrlTest2_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest2_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest2_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest2_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest2Validator;
+	delete iDtorValidator;
+	
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest2_UnitTest::~CMailtoSchemeHandler_ParseUrlTest2_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest2Validator;
+	delete iDtorValidator;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest2_UnitTest::CMailtoSchemeHandler_ParseUrlTest2_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest2UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest2_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+
+	_LIT(KUrl2, "mailto: shahadat@symbian%2cdavid@symbian");
+	iUTContext->iUrl = &KUrl2(); 
+
+	_LIT(KTo1, "shahadat@symbian");
+	_LIT(KTo2, "david@symbian");
+
+	iUTContext->iArray.Append(KTo1());
+	iUTContext->iArray.Append(KTo2());
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest2Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest1_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest2Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+	}
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest3UnitTest,"CMailtoSchemeHandler_ParseUrlTest3_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest3_UnitTest* CMailtoSchemeHandler_ParseUrlTest3_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest3_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest3_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest3_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest3Validator;
+	delete iDtorValidator;
+
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest3_UnitTest::~CMailtoSchemeHandler_ParseUrlTest3_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest3Validator;
+	delete iDtorValidator;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest3_UnitTest::CMailtoSchemeHandler_ParseUrlTest3_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest3UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest3_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+	
+	_LIT(KUrl3, "mailto: shahadat@symbian ? to = david@symbian ");
+	iUTContext->iUrl = &KUrl3(); 
+
+	_LIT(KTo1, "shahadat@symbian");
+	_LIT(KTo2, "david@symbian");
+
+	iUTContext->iArray.Append(KTo1());
+	iUTContext->iArray.Append(KTo2());
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest3Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest1_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest3Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+	}
+
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest4UnitTest,"CMailtoSchemeHandler_ParseUrlTest4_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest4_UnitTest* CMailtoSchemeHandler_ParseUrlTest4_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest4_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest4_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest4_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest4Validator;
+	delete iDtorValidator;
+	
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest4_UnitTest::~CMailtoSchemeHandler_ParseUrlTest4_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest4Validator;
+	delete iDtorValidator;
+	
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest4_UnitTest::CMailtoSchemeHandler_ParseUrlTest4_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest4UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest4_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+	
+	_LIT(KUrl4, "mailto: shahadat@symbian ? cc = david@symbian ");
+	iUTContext->iUrl = &KUrl4(); 
+
+	_LIT(KTo1, "shahadat@symbian");
+	_LIT(KTo2, "david@symbian");
+
+	iUTContext->iArray.Append(KTo1());
+	iUTContext->iArray.Append(KTo2());
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest4Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest1_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest4Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+	}
+
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest5UnitTest,"CMailtoSchemeHandler_ParseUrlTest5_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest5_UnitTest* CMailtoSchemeHandler_ParseUrlTest5_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest5_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest5_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest5_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest5Validator;
+	delete iDtorValidator;
+
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest5_UnitTest::~CMailtoSchemeHandler_ParseUrlTest5_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest5Validator;
+	delete iDtorValidator;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest5_UnitTest::CMailtoSchemeHandler_ParseUrlTest5_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest5UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest5_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+
+	_LIT(KUrl5, "mailto: shahadat@symbian ? bcc = david@symbian ");
+	iUTContext->iUrl = &KUrl5(); 
+
+	_LIT(KTo1, "shahadat@symbian");
+	_LIT(KTo2, "david@symbian");
+
+	iUTContext->iArray.Append(KTo1());
+	iUTContext->iArray.Append(KTo2());
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest5Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest1_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest5Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+	}
+
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest6UnitTest,"CMailtoSchemeHandler_ParseUrlTest6_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest6_UnitTest* CMailtoSchemeHandler_ParseUrlTest6_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest6_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest6_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest6_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest6Validator;
+	delete iDtorValidator;
+	 
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest6_UnitTest::~CMailtoSchemeHandler_ParseUrlTest6_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest6Validator;
+	delete iDtorValidator;
+	 
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest6_UnitTest::CMailtoSchemeHandler_ParseUrlTest6_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest6UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest6_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+
+	_LIT(KUrl6, "mailto: ? to = david@symbian ");
+	iUTContext->iUrl = &KUrl6(); 
+
+	_LIT(KTo1, "david@symbian");
+
+	iUTContext->iArray.Append(KTo1());
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest6Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest1_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest6Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+
+	}
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest7UnitTest,"CMailtoSchemeHandler_ParseUrlTest7_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest7_UnitTest* CMailtoSchemeHandler_ParseUrlTest7_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest7_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest7_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest7_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest7Validator;
+	delete iDtorValidator;
+	 
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest7_UnitTest::~CMailtoSchemeHandler_ParseUrlTest7_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest7Validator;
+	delete iDtorValidator;
+	 
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest7_UnitTest::CMailtoSchemeHandler_ParseUrlTest7_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest7UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest7_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+
+	_LIT(KUrl7, "mailto: ? cc = david@symbian ");
+	iUTContext->iUrl = &KUrl7(); 
+
+	_LIT(KTo1, "david@symbian");
+
+	iUTContext->iArray.Append(KTo1());
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest7Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest1_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest7Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+	}
+
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest8UnitTest,"CMailtoSchemeHandler_ParseUrlTest8_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest8_UnitTest* CMailtoSchemeHandler_ParseUrlTest8_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest8_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest8_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest8_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest8Validator;
+	delete iDtorValidator;
+
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest8_UnitTest::~CMailtoSchemeHandler_ParseUrlTest8_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest8Validator;
+	delete iDtorValidator;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest8_UnitTest::CMailtoSchemeHandler_ParseUrlTest8_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest8UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest8_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+
+	_LIT(KUrl8, "mailto: ? bcc = david@symbian ");
+	iUTContext->iUrl = &KUrl8(); 
+
+	_LIT(KTo1, "david@symbian");
+
+	iUTContext->iArray.Append(KTo1());
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest8Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest1_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest8Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+	}
+
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest9UnitTest,"CMailtoSchemeHandler_ParseUrlTest9_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest9_UnitTest* CMailtoSchemeHandler_ParseUrlTest9_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest9_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest9_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest9_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest9Validator;
+	delete iDtorValidator;
+	 
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest9_UnitTest::~CMailtoSchemeHandler_ParseUrlTest9_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest9Validator;
+	delete iDtorValidator;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest9_UnitTest::CMailtoSchemeHandler_ParseUrlTest9_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest9UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest9_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+
+	_LIT(KUrl9, "mailto: ? subject = hello world ");
+	iUTContext->iUrl = &KUrl9(); 
+
+	_LIT(KSubject, "hello world");
+	iUTContext->iSubjectCheck = &KSubject(); 	
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest9Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest9_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest9Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+	}
+
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest10UnitTest,"CMailtoSchemeHandler_ParseUrlTest10_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest10_UnitTest* CMailtoSchemeHandler_ParseUrlTest10_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest10_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest10_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest10_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest10Validator;
+	delete iDtorValidator;
+	 
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest10_UnitTest::~CMailtoSchemeHandler_ParseUrlTest10_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest10Validator;
+	delete iDtorValidator;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest10_UnitTest::CMailtoSchemeHandler_ParseUrlTest10_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest10UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest10_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+
+	_LIT(KUrl10, "mailto: ? subject = something & something else ");
+	iUTContext->iUrl = &KUrl10(); 
+
+	_LIT(KSubject, "something");
+	iUTContext->iSubjectCheck = &KSubject(); 	
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest10Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest9_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest10Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+	}
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest11UnitTest,"CMailtoSchemeHandler_ParseUrlTest11_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest11_UnitTest* CMailtoSchemeHandler_ParseUrlTest11_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest11_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest11_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest11_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest11Validator;
+	delete iDtorValidator;
+	 
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest11_UnitTest::~CMailtoSchemeHandler_ParseUrlTest11_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest11Validator;
+	delete iDtorValidator;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest11_UnitTest::CMailtoSchemeHandler_ParseUrlTest11_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest11UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest11_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+
+	_LIT(KUrl11, "mailto: ? subject = something %26 something else ");
+	iUTContext->iUrl = &KUrl11(); 
+
+	_LIT(KSubject, "something");
+	iUTContext->iSubjectCheck = &KSubject(); 	
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest11Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest9_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest11Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));
+	}
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest12UnitTest,"CMailtoSchemeHandler_ParseUrlTest12_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest12_UnitTest* CMailtoSchemeHandler_ParseUrlTest12_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest12_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest12_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest12_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest12Validator;
+	delete iDtorValidator;
+	
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest12_UnitTest::~CMailtoSchemeHandler_ParseUrlTest12_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest12Validator;
+	delete iDtorValidator;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest12_UnitTest::CMailtoSchemeHandler_ParseUrlTest12_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest12UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest12_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+
+	//_LIT(KUrl11, "mailto: ? body = body ");
+	_LIT(KUrl12, "mailto: ? body = This is the message body \n It can be long ");
+	iUTContext->iUrl = &KUrl12(); 
+
+	//_LIT(KBody, "body");
+	_LIT(KBody, "This is the message body \n It can be long");
+	iUTContext->iBodyCheck = &KBody(); 	
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest12Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest12_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest12Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));		
+	}
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest13UnitTest,"CMailtoSchemeHandler_ParseUrlTest13_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest13_UnitTest* CMailtoSchemeHandler_ParseUrlTest13_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest13_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest13_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest13_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest13Validator;
+	delete iDtorValidator;
+
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest13_UnitTest::~CMailtoSchemeHandler_ParseUrlTest13_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest13Validator;
+	delete iDtorValidator;
+	 
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest13_UnitTest::CMailtoSchemeHandler_ParseUrlTest13_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest13UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest13_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+	
+	_LIT(KUrl13, "mailto:?&&&body=silly message&&&&&");
+	iUTContext->iUrl = &KUrl13(); 
+
+	_LIT(KBody, "silly message");
+	iUTContext->iBodyCheck = &KBody(); 	
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest13Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest12_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest13Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));		
+	}
+
+// ______________________________________________________________________________
+//
+_LIT(KMailtoSchemeHandlerParseUrlTest14UnitTest,"CMailtoSchemeHandler_ParseUrlTest14_UnitTest");
+
+CMailtoSchemeHandler_ParseUrlTest14_UnitTest* CMailtoSchemeHandler_ParseUrlTest14_UnitTest::NewL(CDataLogger& aDataLogger,
+											MUnitTestObserver& aObserver)
+	{
+	CMailtoSchemeHandler_ParseUrlTest14_UnitTest* self = 
+					new(ELeave) CMailtoSchemeHandler_ParseUrlTest14_UnitTest(aDataLogger,
+																aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self; 
+	}
+
+inline TInt CMailtoSchemeHandler_ParseUrlTest14_UnitTest::RunError(TInt aError)
+	{
+	// The RunL left so chain to the base first and then cleanup
+	TInt error = CUnitTest::RunError(aError);	// Chain to base
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest14Validator;
+	delete iDtorValidator;
+	 
+	return error;
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest14_UnitTest::~CMailtoSchemeHandler_ParseUrlTest14_UnitTest()
+	{
+	// Simply delete our test class instance
+	delete iUTContext;
+	delete iStateAccessor;
+	// delete any validators used
+	delete iCtorValidator;
+	delete iParseUrlTest14Validator;
+	delete iDtorValidator;
+	 
+	}
+
+inline CMailtoSchemeHandler_ParseUrlTest14_UnitTest::CMailtoSchemeHandler_ParseUrlTest14_UnitTest(CDataLogger& aDataLogger,
+																	MUnitTestObserver& aObserver)
+: CUnitTest(KMailtoSchemeHandlerParseUrlTest14UnitTest, aDataLogger, aObserver)
+	{
+	//Do nothing
+	}
+
+// Now the Individual transitions need to be added.
+inline void CMailtoSchemeHandler_ParseUrlTest14_UnitTest::ConstructL()
+	{
+	// Perform the base class initialization
+	UnitTestConstructL();
+
+	// Create the Unit test state accessor
+	iStateAccessor = new(ELeave) TMailtoSchemeHandler_StateAccessor;
+	// Construct the Unit test context.
+	iUTContext = new(ELeave) CMailtoSchemeHandler_UnitTestContext(iDataLogger, *iStateAccessor, *this);
+	// Add the Transitions in the order they are to run
+	// C'tor first, D'tor last...
+	//	Examples of C'tor and D'tor transitions on CMailtoSchemeHandler class.
+	//	using ctor and dtor validators
+
+	_LIT(KUrl14, "mailto:shahadat@symbian ,david@symbian ?cc= john@symbian&bcc=dave@symbian&subject = mailto URLs&body=they seem to work %3a%2d%29");
+	iUTContext->iUrl = &KUrl14(); 
+
+	_LIT(KTo1, "shahadat@symbian");
+	_LIT(KTo2, "david@symbian");
+	_LIT(KTo3, "john@symbian");
+	_LIT(KTo4, "dave@symbian");
+
+	iUTContext->iArray.Append(KTo1());
+	iUTContext->iArray.Append(KTo2());
+	iUTContext->iArray.Append(KTo3());
+	iUTContext->iArray.Append(KTo4());
+
+	_LIT(KSubject, "mailto URLs");
+	iUTContext->iSubjectCheck = &KSubject(); 	
+
+	_LIT(KBody, "they seem to work :-)");
+	iUTContext->iBodyCheck = &KBody(); 	
+
+	iCtorValidator = new(ELeave) TMailtoSchemeHandler_Ctor_TransitionValidator(*iUTContext);
+	iParseUrlTest14Validator = new(ELeave) TMailtoSchemeHandler_ParseUrlTest14_TransitionValidator(*iUTContext);
+	iDtorValidator = new(ELeave) TMailtoSchemeHandler_Dtor_TransitionValidator(*iUTContext);
+
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_NewL_Transition(*iUTContext,*iCtorValidator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_ParseUrlL_Transition(*iUTContext,*iParseUrlTest14Validator));
+	AddTransitionL(new(ELeave)CMailtoSchemeHandler_Dtor_Transition(*iUTContext,*iDtorValidator));	
+	}
+
+// ______________________________________________________________________________
+//