videofeeds/server/tsrc/VCXServiceTest/src/VCXServiceTestBlocks.cpp
changeset 0 96612d01cf9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videofeeds/server/tsrc/VCXServiceTest/src/VCXServiceTestBlocks.cpp	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,2799 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:   ?Description*
+*/
+
+
+
+
+// INCLUDE FILES
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include "VCXServiceTest.h"
+
+#include "VCXTestLog.h"
+#include "CIptvUtil.h"
+
+#include "CIptvService.h"
+#include "CIptvServices.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+_LIT( KSpace, " " );
+const TInt KIptvTestMaxTextLength	= 2048;
+
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::Delete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+//
+void CIptvServiceTest::Delete()
+    {
+	if(iService)
+		{
+		delete iService;
+		iService = NULL;
+		}
+
+	if(iBuff)
+		{
+		delete iBuff;
+		iBuff = NULL;
+		}
+
+	if(iServices)
+		{
+		delete iServices;
+		iServices = NULL;
+		}
+
+	if(iServicesBuff)
+		{
+		delete iServicesBuff;
+		iServicesBuff = NULL;
+		}
+	
+    }
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::RunMethodL(
+    CStifItemParser& aItem )
+    {
+
+    static TStifFunctionInfo const KFunctions[] =
+        {
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function.
+        ENTRY( "CreateService", CIptvServiceTest::CreateServiceL ),
+        ENTRY( "DestroyService", CIptvServiceTest::DestroyServiceL ),
+        ENTRY( "SetId", CIptvServiceTest::SetIdL ),
+        ENTRY( "SetName", CIptvServiceTest::SetNameL ),
+        ENTRY( "SetAddress", CIptvServiceTest::SetAddressL ),
+        ENTRY( "SetIconPath", CIptvServiceTest::SetIconPathL ),
+        ENTRY( "SetEpgPluginUid", CIptvServiceTest::SetEpgPluginUidL ),
+        ENTRY( "SetVodPluginUid", CIptvServiceTest::SetVodPluginUidL ),
+        ENTRY( "SetIptvPluginUid", CIptvServiceTest::SetIptvPluginUidL ),
+        ENTRY( "SetType", CIptvServiceTest::SetTypeL ),
+		ENTRY( "CreateIapList", CIptvServiceTest::CreateIapListL ),
+		ENTRY( "CheckIapList", CIptvServiceTest::CheckIapListL ),
+        ENTRY( "SetUserName", CIptvServiceTest::SetUserNameL ),
+        ENTRY( "SetPassword", CIptvServiceTest::SetPasswordL ),
+        ENTRY( "SetDesc", CIptvServiceTest::SetDescL ),
+        ENTRY( "SetFlags", CIptvServiceTest::SetFlagsL ),
+        ENTRY( "SetApplicationUid", CIptvServiceTest::SetApplicationUidL ),
+        ENTRY( "SetDisplayOrder", CIptvServiceTest::SetDisplayOrderL ),
+        ENTRY( "SetProviderId", CIptvServiceTest::SetProviderIdL ),
+        ENTRY( "SetAccountManagementUrl", CIptvServiceTest::SetAccountManagementUrlL ),
+        ENTRY( "DoExternalize", CIptvServiceTest::DoExternalizeL),
+        ENTRY( "DoInternalize", CIptvServiceTest::DoInternalizeL ),
+        ENTRY( "SetL", CIptvServiceTest::SetL ),
+
+        ENTRY( "CreateServices", CIptvServiceTest::CreateServicesL ),
+        ENTRY( "DestroyServices", CIptvServiceTest::DestroyServicesL ),
+        ENTRY( "ServicesAdd", CIptvServiceTest::ServicesAddL ),
+        ENTRY( "ServicesCount", CIptvServiceTest::ServicesCountL ),
+        ENTRY( "ServicesInternalize", CIptvServiceTest::ServicesInternalizeL ),
+        ENTRY( "ServicesExternalize", CIptvServiceTest::ServicesExternalizeL ),
+        ENTRY( "ServicesGetService", CIptvServiceTest::ServicesGetServiceL ),
+        ENTRY( "ServicesGetServiceByRef", CIptvServiceTest::ServicesGetServiceByRefL ),
+
+        };
+
+    const TInt count = sizeof( KFunctions ) /
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::CreateServiceL
+// CreateServiceL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::CreateServiceL( CStifItemParser& /* aItem */ )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::CreateServiceL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In CreateServiceL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+	TInt err = KErrNone;
+
+    TRAP( err, iService = CIptvService::NewL() );
+
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::CreateServiceL: creating instance failed!");
+		VCXLOGLO1("<<<CIptvServiceTest::CreateServiceL");
+        }
+
+	VCXLOGLO1("<<<CIptvServiceTest::CreateServiceL");
+    return err;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::DestroyServiceL
+// DestroyServiceL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::DestroyServiceL( CStifItemParser& /* aItem */ )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::DestroyServiceL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In DestroyServiceL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+    TInt err = KErrNone;
+
+	if(iService)
+		{
+		delete iService;
+		iService = NULL;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::DestroyServiceL");
+    return err;
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetIdL
+// SetIdL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetIdL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetIdL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetIdL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+	TInt err = KErrNone;
+
+// get params
+	TInt id;
+
+    if(aItem.GetNextInt(id) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::SetIdL: param id = %d", id);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetIdL: reading id parameter failed");
+        iLog->Log(_L("Reading id parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetIdL");
+        return KErrArgument;
+        }
+
+// do stuff
+        /**
+         * Sets service unique ID.
+         * @since
+         * @param aId unique id.
+         */
+        //IMPORT_C void SetId(TUint32 aId);
+
+	iService->SetId(id);
+
+// verify results
+
+	if(iService->GetId() != id)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetIdL: GetId returned wrong value");
+        iLog->Log(_L("GetId returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetIdL");
+        return KErrCorrupt;
+		}
+
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetIdL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetNameL
+// SetNameL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetNameL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetNameL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetNameL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TPtrC string;
+
+	TBuf<KIptvTestMaxTextLength> param;
+
+	if(aItem.GetNextString(string) == KErrNone)
+        {
+
+        param.Format(string);
+        while(aItem.GetNextString(string) == KErrNone)
+        	{
+			if(param.Length() + string.Length() + 1 >= KIptvTestMaxTextLength)
+				{
+				VCXLOGLO1("CIptvServiceTest::SetNameL: parameter name too long, rest of the text ignored");
+				break;
+				}
+			param.Append(KSpace);
+	        param.Append(string);
+        	}
+
+        VCXLOGLO1("CIptvServiceTest::SetNameL: parameter name read");
+        //IPTV_LOG_STR_DESC_HIGH_LEVEL(param);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetNameL: reading name parameter failed");
+        iLog->Log(_L("Reading name parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetNameL");
+        return KErrArgument;
+        }
+
+// do stuff
+/**
+         * Sets the service name, KIptvSmServicesDbNameMaxLength is the max length.
+         * @since
+         * @param aName Name of the service
+         * @return System wide error code.
+         */
+        //IMPORT_C TInt SetName(const TDesC16& aName);
+
+	err = iService->SetName(param);
+
+	if(err != KErrNone)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetNameL: SetName returned error");
+        iLog->Log(_L("SetName returned error"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetNameL");
+        return err;
+		}
+
+// verify results
+
+	if(param.Compare( iService->GetName() ) != 0)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetNameL: GetName returned wrong value");
+        iLog->Log(_L("GetName returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetNameL");
+        return KErrCorrupt;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetNameL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetAddressL
+// SetAddressL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetAddressL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetAddressL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetAddressL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+    aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing);
+
+
+	TInt err = KErrNone;
+
+// get params
+	TPtrC string;
+
+	TBuf<KIptvTestMaxTextLength> param;
+
+	if(aItem.GetNextString(string) == KErrNone)
+        {
+        param.Format(string);
+        VCXLOGLO1("CIptvServiceTest::SetAddressL: parameter address read");
+        //IPTV_LOG_STR_DESC_HIGH_LEVEL(param);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetAddressL: reading address parameter failed");
+        iLog->Log(_L("Reading address parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetAddressL");
+        return KErrArgument;
+        }
+
+// do stuff
+        /**
+        * Sets the service address, KIptvSmServicesDbAddressMaxLength
+        * (defined in CIptvUtil.h) is the max length in bytes.
+        * @since
+        * @param aAddress The address of the service
+        * @return System wide error code.
+        */
+        //IMPORT_C TInt SetAddress(const TDesC16& aAddress);
+
+	err = iService->SetAddress(param);
+	VCXLOGLO2("CIptvServiceTest::SetAddressL: param length: %d", param.Length());
+
+	if(err != KErrNone)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetAddressL: SetAddress returned error");
+        iLog->Log(_L("SetAddress returned error"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetAddressL");
+        return err;
+		}
+
+// verify results
+
+	if(param.Compare( iService->GetAddress() ) != 0)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetAddressL: GetAddress returned wrong value");
+        iLog->Log(_L("GetAddress returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetAddressL");
+        return KErrCorrupt;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetAddressL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetIconPathL
+// SetIconPathL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetIconPathL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetIconPathL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetIconPathL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TPtrC string;
+
+	TBuf<KIptvTestMaxTextLength> param;
+
+	if(aItem.GetNextString(string) == KErrNone)
+        {
+        param.Format(string);
+        VCXLOGLO1("CIptvServiceTest::SetIconPathL: parameter path read");
+        //IPTV_LOG_STR_DESC_HIGH_LEVEL(param);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetIconPathL: reading path parameter failed");
+        iLog->Log(_L("Reading path parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetIconPathL");
+        return KErrArgument;
+        }
+
+
+// do stuff
+        /**
+        * Sets path to icon file. KIptvSmServicesDbIconPathMaxLength is the max
+        * length (in 16-bit words).
+        * @since
+        * @param aIconPath Path to the icon file
+        * @return System wide error code.
+        */
+        //IMPORT_C TInt SetIconPath(const TDesC16& aIconPath);
+
+	err = iService->SetIconPath(param);
+
+	if(err != KErrNone)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetIconPathL: SetIconPath returned error");
+        iLog->Log(_L("SetIconPath returned error"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetIconPathL");
+        return err;
+		}
+
+// verify results
+
+	if(param.Compare( iService->GetIconPath() ) != 0)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetIconPathL: GetIconPath returned wrong value");
+        iLog->Log(_L("GetIconPath returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetIconPathL");
+        return KErrCorrupt;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetIconPathL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetEpgPluginUidL
+// SetEpgPluginUidL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetEpgPluginUidL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetEpgPluginUidL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetEpgPluginUidL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TInt uid;
+
+    if(aItem.GetNextInt(uid) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::SetEpgPluginUidL: param uid = %d", uid);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetEpgPluginUidL: reading uid parameter failed");
+        iLog->Log(_L("Reading uid parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetEpgPluginUidL");
+        return KErrArgument;
+        }
+
+// do stuff
+        /**
+        * Sets EPG plugin UID.
+        * @since
+        * @param aEpgPluginUid EPG plugin UID
+        * @return none
+        */
+        //IMPORT_C void SetEpgPluginUid(TUid aEpgPluginUid);
+
+	TUid uuid;
+	uuid.iUid = uid;
+	iService->SetEpgPluginUid(uuid);
+
+// verify results
+	if(iService->GetEpgPluginUid() != uuid)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetEpgPluginUidL: SetEpgPluginUid returned wrong value");
+        iLog->Log(_L("SetEpgPluginUid returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetEpgPluginUidL");
+        return KErrCorrupt;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetEpgPluginUidL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetVodPluginUidL
+// SetVodPluginUidL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetVodPluginUidL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetVodPluginUidL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetVodPluginUidL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TInt uid;
+
+    if(aItem.GetNextInt(uid) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::SetVodPluginUidL: param uid = %d", uid);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetVodPluginUidL: reading uid parameter failed");
+        iLog->Log(_L("Reading uid parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetVodPluginUidL");
+        return KErrArgument;
+        }
+
+
+// do stuff
+        /**
+        * Sets VOD plugin UID.
+        * @since
+        * @param aVodPluginUid VOD plugin UID
+        * @return none
+        */
+        //IMPORT_C void SetVodPluginUid(TUid aVodPluginUid);
+
+
+	TUid uuid;
+	uuid.iUid = uid;
+	iService->SetVodPluginUid(uuid);
+
+// verify results
+	if(iService->GetVodPluginUid() != uuid)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetVodPluginUidL: GetVodPluginUid returned wrong value");
+        iLog->Log(_L("GetVodPluginUid returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetVodPluginUidL");
+        return KErrCorrupt;
+		}
+
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetVodPluginUidL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetIptvPluginUidL
+// SetIptvPluginUidL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetIptvPluginUidL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetIptvPluginUidL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetIptvPluginUidL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TInt uid;
+
+    if(aItem.GetNextInt(uid) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::SetIptvPluginUidL: param uid = %d", uid);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetIptvPluginUidL: reading uid parameter failed");
+        iLog->Log(_L("Reading uid parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetIptvPluginUidL");
+        return KErrArgument;
+        }
+
+// do stuff
+        /**
+        * Sets IPTV plugin UID.
+        * @since
+        * @param aIptvPluginUid IPTV plugin UID
+        * @return none
+        */
+        //IMPORT_C void SetIptvPluginUid(TUid aIptvPluginUid);
+
+
+	TUid uuid;
+	uuid.iUid = uid;
+	iService->SetIptvPluginUid(uuid);
+
+// verify results
+	if(iService->GetIptvPluginUid() != uuid)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetIptvPluginUidL: GetIptvPluginUid returned wrong value");
+        iLog->Log(_L("GetIptvPluginUid returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetIptvPluginUidL");
+        return KErrCorrupt;
+		}
+
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetIptvPluginUidL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetTypeL
+// SetTypeL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetTypeL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetTypeL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetTypeL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+
+	TInt param;
+
+    if(aItem.GetNextInt(param) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::SetTypeL: param service type = %d", param);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetTypeL: reading service type parameter failed");
+        iLog->Log(_L("Reading service type parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetTypeL");
+        return KErrArgument;
+        }
+
+	CIptvService::TServiceType serviceType = (CIptvService::TServiceType)param;
+
+// do stuff
+        /**
+        * Sets service type.
+        * @since
+        * @param Service type.
+        */
+        //IMPORT_C void SetType(TServiceType aType);
+
+	iService->SetType(serviceType);
+
+// verify results
+
+	if(iService->GetType() != serviceType)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetTypeL: GetType returned wrong value");
+        iLog->Log(_L("GetType returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetTypeL");
+        return KErrCorrupt;
+		}
+
+	serviceType = iService->GetType();
+	if(serviceType < CIptvService::EVod || serviceType > CIptvService::EOther)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetTypeL: GetType returned invalid type");
+        iLog->Log(_L("GetType returned valid type"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetTypeL");
+		return KErrTooBig;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetTypeL");
+    return err;
+
+    }
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::CreateIapListL
+// CreateIapListL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::CreateIapListL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::CreateIapListL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In CreateIapListL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone, err2 = KErrNone;
+
+// get params
+	TInt iapCount;
+
+    if(aItem.GetNextInt(iapCount) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::CreateIapListL: parameter iap count = %d", iapCount);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::CreateIapListL: Reading iap count parameter failed");
+        iLog->Log(_L("Reading iap count parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::CreateIapListL");
+        return KErrArgument;
+        }
+
+// do stuff
+
+	CIptvIapList* iapList;
+
+    TRAP(err, iapList = CIptvIapList::NewL());
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::CreateIapListL: Creating instance of CIptvIapList failed!");
+        iLog->Log(_L("Creating instance of CIptvIapList failed!"));
+        VCXLOGLO1("<<<CIptvServiceTest::CreateIapListL");
+		return KErrNoMemory;
+        }
+
+	CleanupStack::PushL(iapList);
+
+    TUint i;
+    TIptvIap iap;
+
+    for(i = 0; i < iapCount; i++)
+        {
+        iap.iId = i + 1;
+        iap.iPriority = i + 2;
+        iap.iValueExists = EFalse;
+
+        err = iapList->AddIap(iap, ETrue); // ignore max iap
+        if(err != KErrNone)
+            {
+			VCXLOGLO1("CIptvServiceTest::CreateIapListL: Adding iap into list failed!");
+        	iLog->Log(_L("Adding iap into list failed!"));
+        	VCXLOGLO1("<<<CIptvServiceTest::CreateIapListL");
+			return err;
+            }
+        }
+
+	TRAP( err, err2 = iService->SetIapListL(*iapList) );
+    if(err != KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::CreateIapListL: SetIapListL caused a leave (%d)!", err);
+        iLog->Log(_L("SetIapListL caused a leave"));
+        CleanupStack::PopAndDestroy(iapList);
+        VCXLOGLO1("<<<CIptvServiceTest::CreateIapListL");
+		return KErrGeneral;
+        }
+
+    if(err2 != KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::CreateIapListL: SetIapListL failed (%d)", err2);
+        iLog->Log(_L("SetIapListL failed"));
+        CleanupStack::PopAndDestroy(iapList);
+        VCXLOGLO1("<<<CIptvServiceTest::CreateIapListL");
+		return KErrGeneral;
+        }
+
+// verify results
+
+	if( iapList->Count() != iService->GetIapList().Count() )
+    	{
+        VCXLOGLO1("CIptvServiceTest::CreateIapListL: Iap count of IptvService's iap list is wrong");
+        iLog->Log(_L("Iap count of IptvService's iap list is wrong"));
+    	CleanupStack::PopAndDestroy(iapList);
+    	VCXLOGLO1("<<<CIptvServiceTest::CreateIapListL");
+    	return KErrCorrupt;
+    	}
+
+	TIptvIap iap1, iap2;
+
+	for(i=0; i<iapList->Count(); i++)
+		{
+        TInt err = iapList->GetIap(i, iap1);
+        VCXLOGLO2("CIptvServiceTest:: GetIap: ret: %d", err);
+		User::LeaveIfError(err);
+		err = iService->GetIapList().GetIap(i, iap2);
+		VCXLOGLO2("CIptvServiceTest:: GetIap: ret: %d", err);
+		User::LeaveIfError(err);
+
+		if(iap1.iId != iap2.iId)
+			{
+	    	VCXLOGLO2("CIptvServiceTest::CreateIapListL: iId of iap at index %d is wrong", i);
+    	    iLog->Log(_L("iId of iap is wrong"));
+    	    CleanupStack::PopAndDestroy(iapList);
+    	    VCXLOGLO1("<<<CIptvServiceTest::CreateIapListL");
+			return KErrCorrupt;
+			}
+		if(iap1.iPriority != iap2.iPriority)
+			{
+	    	VCXLOGLO2("CIptvServiceTest::CreateIapListL: iPriority of iap at index %d is wrong", i);
+    	    iLog->Log(_L("iPriority of iap is wrong"));
+			CleanupStack::PopAndDestroy(iapList);
+			VCXLOGLO1("<<<CIptvServiceTest::CreateIapListL");
+			return KErrCorrupt;
+			}
+/*
+		if(iap1.iValueExists != iap2.iValueExists)
+			{
+	    	VCXLOGLO2("CIptvServiceTest::CreateIapListL: iValueExists of iap at index %d is wrong", i);
+    	    iLog->Log(_L("iValueExists of iap is wrong"));
+    	    CleanupStack::PopAndDestroy(iapList);
+    	    VCXLOGLO1("<<<CIptvServiceTest::CreateIapListL");
+			return KErrCorrupt;
+			}			*/
+		}
+
+	CleanupStack::PopAndDestroy(iapList);
+
+
+	VCXLOGLO1("<<<CIptvServiceTest::CreateIapListL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::CheckIapListL
+// CheckIapListL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::CheckIapListL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::CheckIapListL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In CheckIapListL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+	TInt err = KErrNone;
+
+// get params
+	TInt exceptedIapCount;
+
+    if(aItem.GetNextInt(exceptedIapCount) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::CheckIapListL: parameter expected iap count = %d", exceptedIapCount);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::CheckIapListL: Reading expected iap count parameter failed");
+        iLog->Log(_L("Reading expected iap count parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::CheckIapListL");
+        return KErrArgument;
+        }
+
+// verify results
+
+	if( exceptedIapCount != iService->GetIapList().Count() )
+    	{
+        VCXLOGLO1("CIptvServiceTest::CheckIapListL: Iap count of IptvService's iap list is wrong");
+        iLog->Log(_L("Iap count of IptvService's iap list is wrong"));
+    	VCXLOGLO1("<<<CIptvServiceTest::CheckIapListL");
+    	return KErrCorrupt;
+    	}
+
+	TIptvIap iap1, iap2;
+
+	TInt i;
+
+	for(i=0; i<iService->GetIapList().Count(); i++)
+		{
+
+		TInt err = iService->GetIapList().GetIap(i, iap2);
+		VCXLOGLO2("CIptvServiceTest:: GetIap ret: %d", err);
+		User::LeaveIfError(err);
+
+  		iap1.iId = i + 1;
+        iap1.iPriority = i + 2;
+        iap1.iValueExists = ETrue;
+
+		if(iap1.iId != iap2.iId)
+			{
+	    	VCXLOGLO2("CIptvServiceTest::CheckIapListL: iId of iap at index %d is wrong", i);
+    	    iLog->Log(_L("iId of iap is wrong"));
+    	    VCXLOGLO1("<<<CIptvServiceTest::CheckIapListL");
+			return KErrCorrupt;
+			}
+		if(iap1.iPriority != iap2.iPriority)
+			{
+	    	VCXLOGLO2("CIptvServiceTest::CheckIapListL: iPriority of iap at index %d is wrong", i);
+    	    iLog->Log(_L("iPriority of iap is wrong"));
+			VCXLOGLO1("<<<CIptvServiceTest::CheckIapListL");
+			return KErrCorrupt;
+			}
+/*
+		if(iap1.iValueExists != iap2.iValueExists)
+			{
+	    	VCXLOGLO2("CIptvServiceTest::CheckIapListL: iValueExists of iap at index %d is wrong", i);
+    	    iLog->Log(_L("iValueExists of iap is wrong"));
+    	    VCXLOGLO1("<<<CIptvServiceTest::CheckIapListL");
+			return KErrCorrupt;
+			}			*/
+		}
+
+
+	VCXLOGLO1("<<<CIptvServiceTest::CheckIapListL");
+    return err;
+
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetUserNameL
+// SetUserNameL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetUserNameL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetUserNameL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetUserNameL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TPtrC string;
+
+	TBuf<KIptvTestMaxTextLength> param;
+
+	if(aItem.GetNextString(string) == KErrNone)
+        {
+
+        param.Format(string);
+        while(aItem.GetNextString(string) == KErrNone)
+        	{
+			if(param.Length() + string.Length() + 1 >= KIptvTestMaxTextLength)
+				{
+				VCXLOGLO1("CIptvServiceTest::SetUserNameL: parameter user name too long, rest of the text ignored");
+				break;
+				}
+			param.Append(KSpace);
+	        param.Append(string);
+        	}
+
+        VCXLOGLO1("CIptvServiceTest::SetUserNameL: parameter user name read");
+        //IPTV_LOG_STR_DESC_HIGH_LEVEL(param);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetUserNameL: reading user name parameter failed");
+        iLog->Log(_L("Reading user name parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetUserNameL");
+        return KErrArgument;
+        }
+
+// do stuff
+        /**
+         * Gets user name.
+         * @since
+         * @return TDes16&, user name
+         */
+        //IMPORT_C TDes16& GetUserName();
+
+	err = iService->SetUserName(param);
+
+	if(err != KErrNone)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetUserNameL: SetUserName returned error");
+        iLog->Log(_L("SetUserName returned error"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetUserNameL");
+        return err;
+		}
+
+// verify results
+
+	if(param.Compare( iService->GetUserName() ) != 0)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetUserNameL: GetUserName returned wrong value");
+        iLog->Log(_L("GetUserName returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetUserNameL");
+        return KErrCorrupt;
+		}
+
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetUserNameL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetPasswordL
+// SetPasswordL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetPasswordL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetPasswordL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetPasswordL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TPtrC string;
+
+	TBuf<KIptvTestMaxTextLength> param;
+
+	if(aItem.GetNextString(string) == KErrNone)
+        {
+        param.Format(string);
+
+        VCXLOGLO1("CIptvServiceTest::SetPasswordL: parameter password read");
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetPasswordL: reading password parameter failed");
+        iLog->Log(_L("Reading password parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetPasswordL");
+        return KErrArgument;
+        }
+
+
+// do stuff
+        /**
+         * Sets password, KIptvSmPasswordsDbPasswordMaxLength is the max length (in 16-bit words,
+         * defined in CIptvUtil.h).
+         * @since
+         * @param aPassword Password, used for authentication.
+         * @return System wide error code.
+         */
+        //IMPORT_C TInt SetPassword(const TDesC16& aPassword);
+
+	err = iService->SetPassword(param);
+
+	if(err != KErrNone)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetPasswordL: SetPassword returned error");
+        iLog->Log(_L("SetPassword returned error"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetPasswordL");
+        return err;
+		}
+
+// verify results
+
+	if(param.Compare( iService->GetPassword() ) != 0)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetPasswordL: GetPassword returned wrong value");
+        iLog->Log(_L("GetPassword returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetPasswordL");
+        return KErrCorrupt;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetPasswordL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetDescL
+// SetDescL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetDescL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetDescL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetDescL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TPtrC string;
+
+	TBuf<KIptvTestMaxTextLength> param;
+
+	if(aItem.GetNextString(string) == KErrNone)
+        {
+
+        param.Format(string);
+        while(aItem.GetNextString(string) == KErrNone)
+        	{
+			if(param.Length() + string.Length() + 1 >= KIptvTestMaxTextLength)
+				{
+				VCXLOGLO1("CIptvServiceTest::SetDescL: parameter desc too long, rest of the text ignored");
+				break;
+				}
+			param.Append(KSpace);
+	        param.Append(string);
+        	}
+
+        VCXLOGLO1("CIptvServiceTest::SetDescL: parameter desc read");
+        //IPTV_LOG_STR_DESC_HIGH_LEVEL(param);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetDescL: reading desc parameter failed");
+        iLog->Log(_L("Reading desc parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetDescL");
+        return KErrArgument;
+        }
+
+
+// do stuff
+        /**
+         * Sets description of the service.
+         * KIptvSmServicesDbDescMaxLength is the max length (in 16-bit words).
+         * @since
+         * @param aDesc Description.
+         * @return System wide error code.
+         */
+        //IMPORT_C TInt SetDesc(const TDesC16& aDesc);
+	err = iService->SetDesc(param);
+
+	if(err != KErrNone)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetDescL: SetDesc returned error");
+        iLog->Log(_L("SetDesc returned error"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetDescL");
+        return err;
+		}
+
+// verify results
+
+	if(param.Compare( iService->GetDesc() ) != 0)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetDescL: GetDesc returned wrong value");
+        iLog->Log(_L("GetDesc returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetDescL");
+        return KErrCorrupt;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetDescL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetFlagsL
+// SetFlagsL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetFlagsL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetFlagsL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetFlagsL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TUint32 flags = 0;
+
+	TInt mask;
+
+    while(aItem.GetNextInt(mask) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::SetIdL: param flag mask = %d", mask);
+
+    	flags |= mask;
+        }
+
+// do stuff
+        /**
+         * Sets service flags, see TFlags for bit values.
+         * @param aFlags 32 bits of flags
+         * @return None.
+         */
+        //IMPORT_C void SetFlags(TUint32 aFlags);
+
+	iService->SetFlags(flags);
+
+// verify results
+
+	if( flags != iService->GetFlags() )
+		{
+        VCXLOGLO1("CIptvServiceTest::SetFlagsL: GetFlags returned wrong value");
+        iLog->Log(_L("GetFlags returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetFlagsL");
+        return KErrArgument;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetFlagsL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetApplicationUidL
+// SetApplicationUidL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetApplicationUidL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetApplicationUidL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetApplicationUidL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TInt uid;
+
+    if(aItem.GetNextInt(uid) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::SetApplicationUidL: param uid = %d", uid);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetApplicationUidL: reading uid parameter failed");
+        iLog->Log(_L("Reading uid parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetApplicationUidL");
+        return KErrArgument;
+        }
+
+// do stuff
+        /**
+         * Sets application UID value.
+         * @param aUid
+         * @return none.
+         */
+        //IMPORT_C void SetApplicationUid(TInt32 aUid);
+
+
+	iService->SetApplicationUid(uid);
+
+// verify results
+	if(iService->GetApplicationUid() != uid)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetApplicationUidL: GetApplicationUid returned wrong value");
+        iLog->Log(_L("GetApplicationUid returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetApplicationUidL");
+        return KErrCorrupt;
+		}
+
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetApplicationUidL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetDisplayOrderL
+// SetDisplayOrderL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetDisplayOrderL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetDisplayOrderL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetDisplayOrderL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+
+	TInt displayOrder;
+
+    if(aItem.GetNextInt(displayOrder) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::SetDisplayOrderL: param displayOrder = %d", displayOrder);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetDisplayOrderL: reading displayOrder parameter failed");
+        iLog->Log(_L("Reading displayOrder parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetDisplayOrderL");
+        return KErrArgument;
+        }
+
+// do stuff
+        /**
+         * Sets display order.
+         * @return none.
+         */
+        //IMPORT_C void SetDisplayOrder(TUint32 aOrder);
+
+
+	iService->SetDisplayOrder(displayOrder);
+
+// verify results
+	if(iService->GetDisplayOrder() != displayOrder)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetDisplayOrderL: GetDisplayOrder returned wrong value");
+        iLog->Log(_L("GetDisplayOrder returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetDisplayOrderL");
+        return KErrCorrupt;
+		}
+
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetDisplayOrderL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetProviderIdL
+// SetProviderIdL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetProviderIdL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetProviderIdL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetProviderIdL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TPtrC string;
+
+	TBuf<KIptvTestMaxTextLength> param;
+
+	if(aItem.GetNextString(string) == KErrNone)
+        {
+        param.Format(string);
+        VCXLOGLO1("CIptvServiceTest::SetProviderIdL: parameter provider id read");
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetProviderIdL: reading provider id parameter failed");
+        iLog->Log(_L("Reading provider id parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetProviderIdL");
+        return KErrArgument;
+        }
+
+// do stuff
+        /**
+         * Sets provider ID.
+         * KIptvSmServicesDbProviderIdMaxLength is the maximum length.
+         * @param aProviderId
+         * @return System wide error code.
+         */
+        //IMPORT_C TInt SetProviderId(const TDesC& aProviderId);
+
+	err = iService->SetProviderId(param);
+
+	if(err != KErrNone)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetProviderIdL: SetProviderId returned error");
+        iLog->Log(_L("SetProviderId returned error"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetProviderIdL");
+        return err;
+		}
+
+// verify results
+
+	if(param.Compare( iService->GetProviderId() ) != 0)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetProviderIdL: GetProviderId returned wrong value");
+        iLog->Log(_L("GetProviderId returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetProviderIdL");
+        return KErrCorrupt;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetProviderIdL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetAccountManagementUrlL
+// SetAccountManagementUrlL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetAccountManagementUrlL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetAccountManagementUrlL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetAccountManagementUrlL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TPtrC string;
+
+	TBuf<KIptvTestMaxTextLength> param;
+
+	if(aItem.GetNextString(string) == KErrNone)
+        {
+        param.Format(string);
+        VCXLOGLO1("CIptvServiceTest::SetAccountManagementUrlL: parameter url read");
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::SetAccountManagementUrlL: reading url parameter failed");
+        iLog->Log(_L("Reading url parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetAccountManagementUrlL");
+        return KErrArgument;
+        }
+
+// do stuff
+        /**
+         * Sets account management url.
+         * KIptvSmServicesDbAccountManagementUrlMaxLength is the maximum length.
+         * @param aAccountManagementUrl
+         * @return System wide error code.
+         */
+        //IMPORT_C TInt SetAccountManagementUrl(const TDesC& aAccountManagementUrl);
+
+	err = iService->SetAccountManagementUrl(param);
+
+	if(err != KErrNone)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetAccountManagementUrlL: SetAccountManagementUrl returned error");
+        iLog->Log(_L("SetAccountManagementUrl returned error"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetAccountManagementUrlL");
+        return err;
+		}
+
+// verify results
+
+	if(param.Compare( iService->GetAccountManagementUrl() ) != 0)
+		{
+        VCXLOGLO1("CIptvServiceTest::SetAccountManagementUrlL: GetAccountManagementUrl returned wrong value");
+        iLog->Log(_L("GetAccountManagementUrl returned wrong value"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetAccountManagementUrlL");
+        return KErrCorrupt;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetAccountManagementUrlL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::DoExternalizeL
+// DoExternalizeL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::DoExternalizeL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::DoExternalizeL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In DoExternalizeL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+
+	TInt useTooSmallBuffer = 0;
+
+    aItem.GetNextInt(useTooSmallBuffer);
+
+// do stuff
+
+        /**
+         * Write internal data to binary format which can be sent over IPC.
+         * @param aStream The Stream where data is written.
+         */
+        //IMPORT_C void ExternalizeL(RDesWriteStream& aStream) const;
+
+	// setup buffer and externalize
+	TUint32 dataSize = iService->CountExternalizeSize();
+
+    if(useTooSmallBuffer)
+    	{
+    		dataSize = 1;
+    	}
+
+    if(iBuff != NULL)
+    	{
+    	delete iBuff;
+    	iBuff = NULL;
+    	}
+
+	TRAP( err, iBuff = HBufC8::NewL(dataSize) );
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::DoExternalizeL: Creating instance of HBufC8 failed!");
+        iLog->Log(_L("Creating instance of HBufC8 failed!"));
+        VCXLOGLO1("<<<CIptvServiceTest::DoExternalizeL");
+		return KErrNoMemory;
+        }
+
+	TPtr8 buffPtr(iBuff->Des());
+
+	RDesWriteStream writeStream;
+	writeStream.Open( buffPtr );
+	TRAP( err, iService->ExternalizeL(writeStream) );
+	if(err == KErrNone)
+		{
+		TRAP( err, writeStream.CommitL() );
+		}
+	writeStream.Close();
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::DoExternalizeL: ExternalizeL failed!");
+        iLog->Log(_L("ExternalizeL failed!"));
+        delete iBuff;
+        iBuff = NULL;
+        VCXLOGLO1("<<<CIptvServiceTest::DoExternalizeL");
+		return KErrGeneral;
+        }
+
+	VCXLOGLO1("<<<CIptvServiceTest::DoExternalizeL");
+    return err;
+
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::DoInternalizeL
+// DoInternalizeL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::DoInternalizeL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::DoInternalizeL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In DoInternalizeL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+
+	TInt useTooSmallBuffer = 0;
+
+    aItem.GetNextInt(useTooSmallBuffer);
+
+// do stuff
+
+        /**
+         * Write internal data to binary format which can be sent over IPC.
+         * @param aStream The Stream where data is written.
+         */
+        //IMPORT_C void ExternalizeL(RDesWriteStream& aStream) const;
+
+
+	// if we have no buffer then create minimum size buffer to test error handling
+	if(useTooSmallBuffer == 1 || iBuff == NULL)
+		{
+		if(iBuff)
+			{
+			delete iBuff;
+			iBuff = NULL;
+			}
+
+		VCXLOGLO1("CIptvServiceTest::DoInternalizeL: Creating too small buffer to test InternalizeL error handling");
+		TRAP( err, iBuff = HBufC8::NewL(1) );
+	    if(err != KErrNone)
+	        {
+	        VCXLOGLO1("CIptvServiceTest::DoInternalizeL: Creating instance of HBufC8 failed!");
+	        iLog->Log(_L("Creating instance of HBufC8 failed!"));
+	        VCXLOGLO1("<<<CIptvServiceTest::DoInternalizeL");
+			return KErrNoMemory;
+	        }
+		}
+
+	TPtr8 buffPtr(iBuff->Des());
+
+//  setup new CIptvService
+	CIptvService* service;
+
+    TRAP(err, service = CIptvService::NewL());
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::DoInternalizeL: Creating instance of CIptvService failed!");
+        iLog->Log(_L("Creating instance of CIptvService failed!"));
+        VCXLOGLO1("<<<CIptvServiceTest::DoInternalizeL");
+		return KErrNoMemory;
+        }
+
+  	CleanupStack::PushL(service);
+
+	// internalize the data
+
+	RDesReadStream readStream;
+	readStream.Open( buffPtr );
+	TRAP( err, service->InternalizeL(readStream) );
+    readStream.Close();
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::DoInternalizeL: InternalizeL failed!");
+        iLog->Log(_L("InternalizeL failed!"));
+        CleanupStack::PopAndDestroy(service);
+        VCXLOGLO1("<<<CIptvServiceTest::DoInternalizeL");
+		return KErrGeneral;
+        }
+
+       /**
+         * Read data stream and construct this class from it.
+         * @param aStream Stream to read data from.
+         */
+        //IMPORT_C void InternalizeL(RDesReadStream& aStream);
+
+// verify results
+
+	TBufC<512> errorMsg (_L("CIptvServiceTest::DoInternalizeL: New externalized service ") );
+
+	err = CompareService(errorMsg.Des(), *iService, *service);
+
+	if(err != KErrNone)
+		{
+			IPTV_LOGTEXT(errorMsg.Des());
+			iLog->Log(errorMsg.Des());
+			CleanupStack::PopAndDestroy(service);
+	    	VCXLOGLO1("<<<CIptvServiceTest::DoInternalizeL");
+			return KErrCorrupt;
+		}
+
+	CleanupStack::PopAndDestroy(service);
+
+	delete iBuff;
+	iBuff = NULL;
+
+	VCXLOGLO1("<<<CIptvServiceTest::DoInternalizeL");
+    return err;
+
+    }
+
+
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::SetL
+// SetL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::SetL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::SetL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In SetL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+	TInt err = KErrNone;
+
+// get params
+
+	TInt params = 0;
+
+    aItem.GetNextInt(params);
+
+// do stuff
+
+        /**
+         * Write internal data to binary format which can be sent over IPC.
+         * @param aStream The Stream where data is written.
+         */
+        //IMPORT_C void ExternalizeL(RDesWriteStream& aStream) const;
+
+
+	CIptvService* service;
+
+	//  setup new CIptvService
+
+    TRAP(err, service = CIptvService::NewL());
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::SetL: Creating instance of CIptvService failed!");
+        iLog->Log(_L("Creating instance of CIptvService failed!"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetL");
+		return KErrNoMemory;
+        }
+
+	CleanupStack::PushL(service);
+
+	switch(params)
+		{
+		default:
+			{
+			// setup buffer and externalize
+			TUint32 dataSize = iService->CountExternalizeSize();
+
+		    HBufC8* buff;
+
+			TRAP( err, buff = HBufC8::NewL(dataSize) );
+		    if(err != KErrNone)
+		        {
+		        VCXLOGLO1("CIptvServiceTest::SetL: Creating instance of HBufC8 failed!");
+		        iLog->Log(_L("Creating instance of HBufC8 failed!"));
+		        CleanupStack::PopAndDestroy(service);
+		        VCXLOGLO1("<<<CIptvServiceTest::SetL");
+				return KErrNoMemory;
+		        }
+
+			CleanupStack::PushL(buff);
+
+			TPtr8 buffPtr(buff->Des());
+
+			RDesWriteStream writeStream;
+			writeStream.Open( buffPtr );
+			TRAP( err, iService->ExternalizeL(writeStream) );
+			if(err != KErrNone)
+				{
+				TRAP( err, writeStream.CommitL() );
+				}
+			writeStream.Close();
+		    if(err != KErrNone)
+		        {
+		        VCXLOGLO1("CIptvServiceTest::SetL: ExternalizeL failed!");
+		        iLog->Log(_L("ExternalizeL failed!"));
+		        CleanupStack::PopAndDestroy(buff);
+		        CleanupStack::PopAndDestroy(service);
+		        VCXLOGLO1("<<<CIptvServiceTest::SetL");
+				return KErrGeneral;
+		        }
+
+			TInt err2;
+			TRAP(err2, err = service->SetL( buffPtr ) );
+
+			if(err2 != KErrNone || err != KErrNone)
+		        {
+		        VCXLOGLO1("CIptvServiceTest::SetL: SetL failed");
+		        iLog->Log(_L("SetL failed"));
+		        CleanupStack::PopAndDestroy(buff);
+		        CleanupStack::PopAndDestroy(service);
+		        VCXLOGLO1("<<<CIptvServiceTest::SetL");
+				return KErrGeneral;
+		        }
+
+			CleanupStack::PopAndDestroy(buff);
+			}
+			break;
+
+		case 1: // setl with invalid buffer
+			{
+			TUint32 dataSize = iService->CountExternalizeSize();
+
+			HBufC8* buff;
+
+			TRAP( err, buff = HBufC8::NewL(dataSize) );
+		    if(err != KErrNone)
+		        {
+		        VCXLOGLO1("CIptvServiceTest::SetL: Creating instance of HBufC8 failed!");
+		        iLog->Log(_L("Creating instance of HBufC8 failed!"));
+		        CleanupStack::PopAndDestroy(service);
+		        VCXLOGLO1("<<<CIptvServiceTest::SetL");
+				return KErrNoMemory;
+		        }
+
+			CleanupStack::PushL(buff);
+
+			TPtr8 buffPtr(buff->Des());
+
+			TInt err2;
+			TRAP(err2, err = service->SetL( buffPtr ) );
+
+			if(err2 != KErrNone || err != KErrNone)
+		        {
+		        VCXLOGLO1("CIptvServiceTest::SetL: SetL failed!");
+		        iLog->Log(_L("SetL failed!"));
+		        CleanupStack::PopAndDestroy(buff);
+		        CleanupStack::PopAndDestroy(service);
+		        VCXLOGLO1("<<<CIptvServiceTest::SetL");
+				return KErrGeneral;
+		        }
+
+			CleanupStack::PopAndDestroy(buff);
+
+			}
+			break;
+		}
+
+
+    if(service == NULL)
+        {
+        VCXLOGLO1("CIptvServiceTest::SetL: Service is NULL");
+        iLog->Log(_L("Service is NULL"));
+        VCXLOGLO1("<<<CIptvServiceTest::SetL");
+		return KErrUnknown;
+        }
+
+
+	TBufC<512> errorMsg (_L("CIptvServiceTest::SetL: New service ") );
+
+	err = CompareService(errorMsg.Des(), *iService, *service);
+
+	if(err != KErrNone)
+		{
+			IPTV_LOGTEXT(errorMsg.Des());
+			iLog->Log(errorMsg.Des());
+			CleanupStack::PopAndDestroy(service);
+	    	VCXLOGLO1("<<<CIptvServiceTest::SetL");
+			return KErrCorrupt;
+		}
+
+
+	CleanupStack::PopAndDestroy(service);
+
+	VCXLOGLO1("<<<CIptvServiceTest::SetL");
+    return err;
+
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CompareService::CompareService
+// CompareService helper method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::CompareService( TPtr aErrPtr, CIptvService& aOriginalService, CIptvService& aNewService )
+	{
+
+	 VCXLOGLO1(">>>CIptvServiceTest::CompareServiceL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In CompareServiceL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+	// verify member data
+
+	if(aOriginalService.GetId() != aNewService.GetId() )
+		{
+	  	aErrPtr.Append( _L("service has wrong id") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+		return KErrCorrupt;
+		}
+
+	if(aOriginalService.GetEpgPluginUid() != aNewService.GetEpgPluginUid() )
+		{
+	  	aErrPtr.Append( _L("service has wrong epg plugin uid") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+		return KErrCorrupt;
+		}
+
+
+	if(aOriginalService.GetVodPluginUid() != aNewService.GetVodPluginUid() )
+		{
+	  	aErrPtr.Append( _L("service has wrong vod plugin uid") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+		return KErrCorrupt;
+		}
+
+
+	if(aOriginalService.GetIptvPluginUid() != aNewService.GetIptvPluginUid() )
+		{
+	  	aErrPtr.Append( _L("service has wrong iptv plugin uid") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+		return KErrCorrupt;
+		}
+
+
+	if(aOriginalService.GetType() != aNewService.GetType() )
+		{
+	  	aErrPtr.Append( _L("service has wrong type") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+		return KErrCorrupt;
+		}
+
+
+	if(aOriginalService.GetFlags() != aNewService.GetFlags() )
+		{
+	  	aErrPtr.Append( _L("service has wrong flags") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+		return KErrCorrupt;
+		}
+
+
+	if(aOriginalService.GetApplicationUid() != aNewService.GetApplicationUid() )
+		{
+	  	aErrPtr.Append( _L("service has wrong application uid") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+		return KErrCorrupt;
+		}
+
+
+	if(aOriginalService.GetDisplayOrder() != aNewService.GetDisplayOrder() )
+		{
+	  	aErrPtr.Append( _L("service has wrong display order") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+		return KErrCorrupt;
+		}
+
+
+	if(aOriginalService.GetProviderId() != aNewService.GetProviderId() )
+		{
+	  	aErrPtr.Append( _L("service has wrong provider id") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+		return KErrCorrupt;
+		}
+
+	if(aOriginalService.GetName().Compare( aNewService.GetName() ) != 0)
+		{
+		aErrPtr.Append( _L("service has wrong name") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+		return KErrCorrupt;
+		}
+
+	if(aOriginalService.GetAddress().Compare( aNewService.GetAddress() ) != 0)
+		{
+		aErrPtr.Append( _L("service has wrong address") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+   		return KErrCorrupt;
+		}
+
+	if(aOriginalService.GetIconPath().Compare( aNewService.GetIconPath() ) != 0)
+		{
+		aErrPtr.Append( _L("service has wrong icon path") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+		return KErrCorrupt;
+		}
+
+	if(aOriginalService.GetUserName().Compare( aNewService.GetUserName() ) != 0)
+		{
+		aErrPtr.Append( _L("service has wrong user name") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+   		return KErrCorrupt;
+		}
+
+	if(aOriginalService.GetPassword().Compare( aNewService.GetPassword() ) != 0)
+		{
+		aErrPtr.Append( _L("service has wrong password") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+   		return KErrCorrupt;
+		}
+
+	if(aOriginalService.GetDesc().Compare( aNewService.GetDesc() ) != 0)
+		{
+		aErrPtr.Append( _L("service has wrong desc") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+   		return KErrCorrupt;
+		}
+
+	if(aOriginalService.GetProviderId().Compare( aNewService.GetProviderId() ) != 0)
+		{
+		aErrPtr.Append( _L("service has wrong provider id") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+   		return KErrCorrupt;
+		}
+
+	if(aOriginalService.GetAccountManagementUrl().Compare( aNewService.GetAccountManagementUrl() ) != 0)
+		{
+		aErrPtr.Append( _L("service has wrong account managment url") );
+	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+   		return KErrCorrupt;
+		}
+
+
+	// verify iaplist
+
+	TIptvIap iap1, iap2;
+
+	TInt i;
+
+	for(i=0; i<aOriginalService.GetIapList().Count(); i++)
+		{
+
+		TInt err  = aOriginalService.GetIapList().GetIap(i, iap1);
+		VCXLOGLO2("CIptvServiceTest:: GetIap ret: %d", err);
+		User::LeaveIfError(err);
+		err = aNewService.GetIapList().GetIap(i, iap2);
+		VCXLOGLO2("CIptvServiceTest:: GetIap ret: %d", err);
+		User::LeaveIfError(err);
+
+		if(iap1.iId != iap2.iId)
+			{
+	    	aErrPtr.Append( _L("Service's iap list has wrong iap.iId at index: ") );
+	    	aErrPtr.AppendNum(i);
+    	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+			return KErrCorrupt;
+			}
+		if(iap1.iPriority != iap2.iPriority)
+			{
+	    	aErrPtr.Append( _L("Service's iap list has wrong iap.iPriority at index: ") );
+	    	aErrPtr.AppendNum(i);
+			VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+			return KErrCorrupt;
+			}
+/*
+		if(iap1.iValueExists != iap2.iValueExists)
+			{
+	    	aErrPtr.Append( _L("service's iap list has wrong iap.iValueExists at index %d", i);
+    	    iLog->Log(_L("New externalized service's iap list has wrong iap.iValueExists"));
+			CleanupStack::PopAndDestroy(service);
+			CleanupStack::PopAndDestroy(buff);
+    	    VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+			return KErrCorrupt;
+			}			*/
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::CompareServiceL");
+
+	return KErrNone;
+	}
+
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::CreateServicesL
+// CreateServicesL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::CreateServicesL( CStifItemParser& /* aItem */ )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::CreateServicesL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In CreateServicesL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+	TInt err = KErrNone;
+
+    TRAP( err, iServices = CIptvServices::NewL() );
+
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::CreateServicesL: creating instance failed!");
+        }
+
+	VCXLOGLO1("<<<CIptvServiceTest::CreateServicesL");
+    return err;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::DestroyServicesL
+// DestroyServicesL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::DestroyServicesL( CStifItemParser& /* aItem */ )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::DestroyServicesL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In DestroyServicesL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+    TInt err = KErrNone;
+
+	if(iServices)
+		{
+		delete iServices;
+		iServices = NULL;
+		}
+
+	iServicesArray.ResetAndDestroy();
+
+	VCXLOGLO1("<<<CIptvServiceTest::DestroyServicesL");
+    return err;
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::ServicesAddL
+// ServicesAddL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::ServicesAddL( CStifItemParser& /* aItem */ )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::ServicesAddL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In ServicesAddL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+	TInt err = KErrNone;
+
+	CIptvService* copyService;
+	TRAP( err, copyService = CIptvService::NewL() );
+	if(err != KErrNone)
+		{
+		VCXLOGLO1("CIptvServiceTest::ServicesAddL: Creating instance of CIptvService failed.");
+	    iLog->Log(_L("Creating instance of CIptvService failed."));
+	    VCXLOGLO1("<<<CIptvServiceTest::ServicesAddL");
+		return KErrNoMemory;
+		}
+
+	CleanupStack::PushL(copyService);
+	HBufC8* buff;
+	TRAP( err, buff = iService->GetL() );
+	if(err != KErrNone)
+		{
+		VCXLOGLO1("CIptvServiceTest::ServicesAddL: GetL failed.");
+	    iLog->Log(_L("GetL failed."));
+	    CleanupStack::PopAndDestroy(copyService);
+	    VCXLOGLO1("<<<CIptvServiceTest::ServicesAddL");
+		return KErrGeneral;
+		}
+	CleanupStack::PushL(buff);
+	TRAP( err, copyService->SetL( buff->Des() ) );
+	if(err != KErrNone)
+		{
+		VCXLOGLO1("CIptvServiceTest::ServicesAddL: SetL failed.");
+	    iLog->Log(_L("SetL failed."));
+	    CleanupStack::PopAndDestroy(buff);
+	    CleanupStack::PopAndDestroy(copyService);
+	    VCXLOGLO1("<<<CIptvServiceTest::ServicesAddL");
+		return KErrGeneral;
+		}
+
+	err = iServicesArray.Append(copyService);
+
+	CleanupStack::PopAndDestroy(buff);
+	CleanupStack::Pop(copyService);
+	copyService = NULL;
+
+	if(err != KErrNone)
+		{
+		VCXLOGLO1("CIptvServiceTest::ServicesAddL: Adding service to array failed.");
+	    iLog->Log(_L("Adding service to array failed."));
+	    VCXLOGLO1("<<<CIptvServiceTest::ServicesAddL");
+		return err;
+		}
+
+	// do stuff
+	TInt serviceCount = iServices->Count();
+
+	TInt err2 = KErrNone;
+	TRAP(err2, err = iServices->AddL(*iService));
+
+
+	if(err != KErrNone)
+		{
+		VCXLOGLO1("CIptvServiceTest::ServicesAddL: CIptvServices::AddL returned error.");
+	    iLog->Log(_L("CIptvServices returned error."));
+	    VCXLOGLO1("<<<CIptvServiceTest::ServicesAddL");
+		return err;
+		}
+
+	if(err2 != KErrNone)
+		{
+		VCXLOGLO1("CIptvServiceTest::ServicesAddL: CIptvServices::AddL caused a leave.");
+	    iLog->Log(_L("CIptvServices caused a leave."));
+	    VCXLOGLO1("<<<CIptvServiceTest::ServicesAddL");
+		return err;
+		}
+
+// verify results
+
+	if( serviceCount >= iServices->Count() )
+		{
+		VCXLOGLO1("CIptvServiceTest::ServicesAddL: CIptvServices::Count of services did not incerement.");
+	    iLog->Log(_L("CIptvServices::Count of services did not incerement."));
+	    VCXLOGLO1("<<<CIptvServiceTest::ServicesAddL");
+		return KErrGeneral;
+		}
+
+	CIptvService* service;
+	TRAP( err, service = iServices->GetServiceL(serviceCount) );
+	if(err != KErrNone)
+		{
+		VCXLOGLO1("CIptvServiceTest::ServicesAddL: CIptvServices::GetServiceL caused a leave.");
+	    iLog->Log(_L("CIptvServices::GetServiceL caused a leave."));
+	    VCXLOGLO1("<<<CIptvServiceTest::ServicesAddL");
+		return err;
+		}
+
+	CleanupStack::PushL(service);
+
+	TBufC<512> errorMsg(_L("CIptvServiceTest::ServicesAddL: Service was added in the list and now "));
+
+	err = CompareService(errorMsg.Des(), *iService, *service);
+
+	if(err != KErrNone)
+		{
+		IPTV_LOGTEXT(errorMsg.Des());
+		iLog->Log(errorMsg.Des());
+		CleanupStack::PopAndDestroy(service);
+    	VCXLOGLO1("<<<CIptvServiceTest::DoInternalizeL");
+		return err;
+    	}
+
+	CleanupStack::PopAndDestroy(service);
+
+
+	VCXLOGLO1("<<<CIptvServiceTest::ServicesAddL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::ServicesCountL
+// ServicesCountL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::ServicesCountL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::ServicesCountL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In ServicesCountL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TInt expectedCount = 0;
+
+    if(aItem.GetNextInt(expectedCount) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::ServicesCountL: param expected count = %d", expectedCount);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::ServicesCountL: reading expected count parameter failed");
+        iLog->Log(_L("Reading expected count parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesCountL");
+        return KErrArgument;
+        }
+
+// do stuff
+	if(iServices->Count() != expectedCount)
+		{
+		VCXLOGLO1("CIptvServiceTest::ServicesCountL: Instance of CIptvServices::Count didn't return the expected value.");
+	    iLog->Log(_L(" Instance of CIptvServices::Count didn't return the expected value."));
+	    VCXLOGLO1("<<<CIptvServiceTest::ServicesCountL");
+		return err;
+		}
+
+// verify results
+
+
+	VCXLOGLO1("<<<CIptvServiceTest::ServicesCountL");
+    return err;
+
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::ServicesInternalizeL
+// ServicesInternalizeL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::ServicesInternalizeL( CStifItemParser& /* aItem */ )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::ServicesInternalizeL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In ServicesInternalizeL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+	if(iServicesBuff == NULL)
+	{
+        VCXLOGLO1("CIptvServiceTest::ServicesInternalizeL: ServicesExternalizeL must be called first");
+        iLog->Log(_L("ServicesExternalizeL must be called first"));
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesInternalizeL");
+        return KErrArgument;
+	}
+
+	TPtr8 buffPtr(iServicesBuff->Des());
+
+//  setup new CIptvService
+	CIptvServices* services;
+
+    TRAP(err, services = CIptvServices::NewL());
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::ServicesInternalizeL: Creating instance of CIptvServices failed!");
+        iLog->Log(_L("Creating instance of CIptvServices failed!"));
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesInternalizeL");
+		return KErrNoMemory;
+        }
+
+  	CleanupStack::PushL(services);
+
+	// internalize the data
+
+	RDesReadStream readStream;
+	readStream.Open( buffPtr );
+	TRAP( err, services->InternalizeL(readStream) );
+    readStream.Close();
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::ServicesInternalizeL: InternalizeL failed!");
+        iLog->Log(_L("InternalizeL failed!"));
+        CleanupStack::PopAndDestroy(services);
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesInternalizeL");
+		return KErrGeneral;
+        }
+
+// verify results
+
+	TBufC<512> errorMsg(_L("CIptvServiceTest::ServicesInternalizeL: Service was internalized and now "));
+
+
+	//err = CompareService(errorMsg.Des(), *iService, *services);
+
+	if(err != KErrNone)
+		{
+		IPTV_LOGTEXT(errorMsg.Des());
+		iLog->Log(errorMsg.Des());
+		CleanupStack::PopAndDestroy(services);
+    	VCXLOGLO1("<<<CIptvServiceTest::ServicesInternalizeL");
+		return err;
+    	}
+
+	delete iServicesBuff;
+	iServicesBuff = NULL;
+
+	CleanupStack::PopAndDestroy(services);
+
+	VCXLOGLO1("<<<CIptvServiceTest::ServicesInternalizeL");
+    return err;
+
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::ServicesExternalizeL
+// ServicesExternalizeL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::ServicesExternalizeL( CStifItemParser& /* aItem */ )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::ServicesExternalizeL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In ServicesExternalizeL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+	TInt err = KErrNone;
+
+	TUint32 dataSize = iServices->CountExternalizeSize();
+
+    if(iServicesBuff != NULL)
+    	{
+    	delete iServicesBuff;
+    	iServicesBuff = NULL;
+    	}
+
+	TRAP( err, iServicesBuff = HBufC8::NewL(dataSize) );
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::ServicesExternalizeL: Creating instance of HBufC8 failed!");
+        iLog->Log(_L("Creating instance of HBufC8 failed!"));
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesExternalizeL");
+		return KErrNoMemory;
+        }
+
+	TPtr8 buffPtr(iServicesBuff->Des());
+
+	RDesWriteStream writeStream;
+	writeStream.Open( buffPtr );
+	TRAP( err, iServices->ExternalizeL(writeStream) );
+	if(err != KErrNone)
+		{
+		TRAP( err, writeStream.CommitL() );
+		}
+	writeStream.Close();
+    if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::ServicesExternalizeL: ExternalizeL failed!");
+        iLog->Log(_L("ExternalizeL failed!"));
+        delete iServicesBuff;
+        iServicesBuff = NULL;
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesExternalizeL");
+		return KErrGeneral;
+        }
+
+	VCXLOGLO1("<<<CIptvServiceTest::ServicesExternalizeL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::ServicesGetServiceL
+// ServicesGetServiceL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::ServicesGetServiceL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::ServicesGetServiceL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In ServicesGetServiceL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+	TInt index;
+
+ 	if(aItem.GetNextInt(index) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::ServicesGetServiceL: param index = %d", index);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::ServicesGetServiceL: reading index parameter failed");
+        iLog->Log(_L("Reading index parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesGetServiceL");
+        return KErrArgument;
+        }
+
+// do stuff
+	CIptvService* service = NULL;
+
+	TRAP(err, service = iServices->GetServiceL(index) );
+  	if(err != KErrNone)
+        {
+        VCXLOGLO1("CIptvServiceTest::ServicesGetServiceL: CIptvServices::GetServiceL failed");
+        iLog->Log(_L("CIptvServices::GetServiceL failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesGetServiceL");
+		return KErrGeneral;
+        }
+
+	if(service == NULL)
+		{
+ 		VCXLOGLO1("CIptvServiceTest::ServicesGetServiceL: CIptvServices::GetServiceL returned NULL");
+        iLog->Log(_L("CIptvServices::GetServiceL returned NULL"));
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesGetServiceL");
+		return KErrBadHandle;
+		}
+
+   	CleanupStack::PushL(service);
+
+// verify results
+
+	CIptvService* service2 = NULL;
+
+	if( index >= iServicesArray.Count() )
+		{
+		VCXLOGLO1("CIptvServiceTest::ServicesGetServiceL: Index larget than iServicesArray.Count, cannot verify result");
+        iLog->Log(_L("Index larget than iServicesArray.Count, cannot verify result"));
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesGetServiceL");
+		return KErrGeneral;
+		}
+
+	service2 = iServicesArray[index];
+
+	TBufC<512> errorMsg (_L("CIptvServiceTest::ServicesGetServiceL: CIptvServices::GetServiceL returned ") );
+
+	err = CompareService(errorMsg.Des(), *service, *service2);
+
+	if(err != KErrNone)
+		{
+		IPTV_LOGTEXT(errorMsg.Des());
+		iLog->Log(errorMsg.Des());
+		CleanupStack::PopAndDestroy(service);
+    	VCXLOGLO1("<<<CIptvServiceTest::ServicesGetServiceL");
+		return KErrCorrupt;
+		}
+
+	CleanupStack::PopAndDestroy(service);
+
+	VCXLOGLO1("<<<CIptvServiceTest::ServicesGetServiceL");
+    return err;
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::ServicesGetServiceByRefL
+// ServicesGetByRefL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::ServicesGetServiceByRefL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::ServicesGetServiceByRefL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In ServicesGetServiceByRefL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+
+	TInt index;
+
+ 	if(aItem.GetNextInt(index) == KErrNone)
+        {
+        VCXLOGLO2("CIptvServiceTest::ServicesGetServiceByRefL: param index = %d", index);
+        }
+    else
+        {
+        VCXLOGLO1("CIptvServiceTest::ServicesGetServiceByRefL: reading index parameter failed");
+        iLog->Log(_L("Reading index parameter failed"));
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesGetServiceByRefL");
+        return KErrArgument;
+        }
+
+// do stuff
+
+
+// verify results
+	CIptvService* service2 = NULL;
+
+	if( index >= iServicesArray.Count() )
+		{
+		VCXLOGLO1("CIptvServiceTest::ServicesGetServiceByRefL: Index larget than iServicesArray.Count, cannot verify result");
+        iLog->Log(_L("Index larget than iServicesArray.Count, cannot verify result"));
+        VCXLOGLO1("<<<CIptvServiceTest::ServicesGetServiceByRefL");
+		return KErrGeneral;
+		}
+
+	service2 = iServicesArray[index];
+
+	TBufC<512> errorMsg (_L("CIptvServiceTest::ServicesGetServiceByRefL: CIptvServices::GetServiceL returned  ") );
+
+	err = CompareService(errorMsg.Des(), iServices->GetServiceRefL(index), *service2);
+
+	if( err == KErrNone )
+	    {
+	    CIptvService& service3 = iServices->Service(index, err);
+	    if( err == KErrNone )
+	        {
+	        err = CompareService(errorMsg.Des(), service3, *service2);
+	        }
+	    if( err != KErrNone )
+    	    {
+    	    VCXLOGLO2("CIptvServiceTest:: getservice() compare error: %d", err);
+    	    }
+	    }
+	else
+	    {
+		IPTV_LOGTEXT(errorMsg.Des());
+		iLog->Log(errorMsg.Des());
+    	VCXLOGLO1("<<<CIptvServiceTest::ServicesGetServiceByRefL");
+		return KErrCorrupt;
+		}
+
+	VCXLOGLO1("<<<CIptvServiceTest::ServicesGetServiceByRefL");
+    return err;
+
+    }
+
+
+    /*
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::XXXXXL
+// XXXXXL test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIptvServiceTest::XXXXXL( CStifItemParser& aItem )
+    {
+    VCXLOGLO1(">>>CIptvServiceTest::XXXXXL");
+    // Print to UI
+    _LIT( KIptvServiceTest, "IptvServiceTest" );
+    _LIT( KWhere, "In XXXXXL" );
+    TestModuleIf().Printf( 0, KIptvServiceTest, KWhere );
+    // Print to log file
+    iLog->Log( KWhere );
+
+
+	TInt err = KErrNone;
+
+// get params
+
+
+// do stuff
+
+
+// verify results
+
+
+	VCXLOGLO1("<<<CIptvServiceTest::XXXXXL");
+    return err;
+
+    }
+    */
+
+
+
+
+// -----------------------------------------------------------------------------
+// CIptvServiceTest::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+/*
+TInt CIptvServiceTest::?member_function(
+   CItemParser& aItem )
+   {
+
+   ?code
+
+   }
+*/
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+//  End of File