locationtriggering/tsrc/lbtengine_test/UpdateTrigger/src/UpdateTriggerBlocks.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:37:04 +0300
branchRCL_3
changeset 44 2b4ea9893b66
parent 0 667063e416a2
child 45 6b6920c56e2f
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002 - 2007 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:     Test module to implement Update trigger related test cases
*
*/






// INCLUDE FILES
#include <e32svr.h>
#include <StifParser.h>
#include <Stiftestinterface.h>
#include "UpdateTrigger.h"
#include "LbtAppCellInfo.h"
#include "t_triggerfireobserver.h"
#include <e32property.h>
#include <centralrepository.h>
#include <SimulationPSYInternalCRKeys.h>
//LT API
#include <lbtcommon.h>
#include <lbterrors.h>
#include <lbtgeoareabase.h>
#include <lbtgeocircle.h>
#include <lbtgeocell.h>
#include <lbtgeorect.h>
#include <lbtlisttriggeroptions.h>
#include <lbtsessiontrigger.h>
#include <lbtstartuptrigger.h>
#include <lbtserver.h>
#include <lbttriggerchangeevent.h>
#include <lbttriggerchangeeventnotifier.h>
#include <lbttriggerchangeeventobserver.h>
#include <lbttriggerconditionarea.h>
#include <lbttriggerconditionbase.h>
#include <lbttriggerdynamicinfo.h>
#include <lbttriggerentry.h>
#include <lbttriggerfilterbase.h>
#include <lbttriggerfilterbyarea.h>
#include <lbttriggerfilterbyattribute.h>
#include <lbttriggerfiltercomposite.h>
#include <lbttriggerfiringeventnotifier.h>
#include <lbttriggerfiringeventobserver.h>
#include <lbttriggerinfo.h>
#include <lbttriggeringsystemsettings.h>
#include <lbttriggeringsystemsettingschangeeventnotifier.h>
#include <lbttriggeringsystemsettingschangeeventobserver.h>
//#include <lbtoperation.h>
#include <EPos_MPosModulesObserver.h> 
#include <EPos_CPosModuleIdList.h>
#include <EPos_CPosModules.h>
#include <EPos_CPosModuleUpdate.h> // CPosModuleUpdate

// EXTERNAL DATA STRUCTURES
//extern  ?external_data;

// EXTERNAL FUNCTION PROTOTYPES  
//extern ?external_function( ?arg_type,?arg_type );

// CONSTANTS
//const ?type ?constant_var = ?constant;

// 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 ===============================

// -----------------------------------------------------------------------------
// CUpdateTrigger::Delete
// Delete here all resources allocated and opened from test methods. 
// Called from destructor. 
// -----------------------------------------------------------------------------
//

void CUpdateTrigger::Delete() 
    {

    }
    
void CUpdateTrigger::EnableSimPSYL() 
    {
   CPosModules* db = CPosModules::OpenL();
	CleanupStack::PushL( db );

	// List entries
	CPosModuleIdList* idList = db->ModuleIdListLC();
	CPosModuleUpdate* updateParams = CPosModuleUpdate::NewLC();

	// Get the display name and status of each installed positioning plug-in
	for (TInt i = 0; i < idList->Count(); i++)
    {
    // get PSY info
    TPositionModuleInfo moduleInfo;
    db->GetModuleInfoL( (*idList)[i], moduleInfo );
	
    if ( moduleInfo.IsAvailable() )
        {
        // read PSY’s name
        TBuf<KPositionMaxModuleName> moduleName;
        moduleInfo.GetModuleName( moduleName );
        TPositionModuleId id = moduleInfo.ModuleId();
        
		updateParams->SetUpdateAvailability( EFalse );
		db->UpdateModuleL( id, *updateParams );

        }
    }
    TPositionModuleId id2 = {0x101F7A81};
	updateParams->SetUpdateAvailability( ETrue );
	db->UpdateModuleL( id2, *updateParams );

    CleanupStack::PopAndDestroy( updateParams );

    CleanupStack::PopAndDestroy( idList );
	CleanupStack::PopAndDestroy( db );
    }    

// -----------------------------------------------------------------------------
// CUpdateTrigger::RunMethodL
// Run specified method. Contains also table of test mothods and their names.
// -----------------------------------------------------------------------------
//
TInt CUpdateTrigger::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( "Example", CUpdateTrigger::ExampleL ),
       ENTRY( "test01", CUpdateTrigger::TCLBTFW001_testL ),
       ENTRY( "test02", CUpdateTrigger::TCLBTFW002_testL ),
       ENTRY( "test03", CUpdateTrigger::TCLBTFW003_testL ),
       ENTRY( "test04", CUpdateTrigger::TCLBTFW004_testL ),
       ENTRY( "test05", CUpdateTrigger::TCLBTFW005_testL ),
       ENTRY( "test06", CUpdateTrigger::TCLBTFW006_testL ),
       ENTRY( "test07", CUpdateTrigger::TCLBTFW007_testL ),
       ENTRY( "test08", CUpdateTrigger::TCLBTFW008_testL ),
       ENTRY( "test09", CUpdateTrigger::TCLBTFW009_testL ),
       ENTRY( "test10", CUpdateTrigger::TCLBTFW010_testL ),
       ENTRY( "test11", CUpdateTrigger::TCLBTFW011_testL ),
       ENTRY( "test12", CUpdateTrigger::TCLBTFW012_testL ),
       ENTRY( "test13", CUpdateTrigger::TCLBTFW013_testL ),
       ENTRY( "test14", CUpdateTrigger::TCLBTFW014_testL ),
       ENTRY( "test15", CUpdateTrigger::TCLBTFW015_testL ),
       ENTRY( "test16", CUpdateTrigger::TCLBTFW016_testL ),
       ENTRY( "TestFireOnUpdate1", CUpdateTrigger::TestFireOnUpdate1L ),
       ENTRY( "TestFireOnUpdate2", CUpdateTrigger::TestFireOnUpdate2L ),
       ENTRY( "TestFireOnUpdate3", CUpdateTrigger::TestFireOnUpdate3L ),
       ENTRY( "TestFireOnUpdate4", CUpdateTrigger::TestFireOnUpdate4L ),
       ENTRY( "TestFireOnUpdate5", CUpdateTrigger::TestFireOnUpdate5L ),
       ENTRY( "TestFireOnUpdate6", CUpdateTrigger::TestFireOnUpdate6L ),
       ENTRY( "TestFireOnUpdate7", CUpdateTrigger::TestFireOnUpdate7L ),
       ENTRY( "TestFireOnUpdate8", CUpdateTrigger::TestFireOnUpdate8L ),
       ENTRY( "TestFireOnUpdate9", CUpdateTrigger::TestFireOnUpdate9L ),
       ENTRY( "TestFireOnUpdate10", CUpdateTrigger::TestFireOnUpdate10L ),
       ENTRY( "TestFireOnUpdate11", CUpdateTrigger::TestFireOnUpdate11L ),
       ENTRY( "TestFireOnUpdate12", CUpdateTrigger::TestFireOnUpdate12L ),
       ENTRY( "TestFireOnUpdate13", CUpdateTrigger::TestFireOnUpdate13L ),
       ENTRY( "TestFireOnUpdate14", CUpdateTrigger::TestFireOnUpdate14L ),
       ENTRY( "TestFireOnUpdate15", CUpdateTrigger::TestFireOnUpdate15L ),
       ENTRY( "TestAsyncUpdate1L", CUpdateTrigger::TestAsyncUpdate1L ),
       ENTRY( "TestAsyncUpdate2L", CUpdateTrigger::TestAsyncUpdate2L ),
       ENTRY( "TestAsyncUpdate3L", CUpdateTrigger::TestAsyncUpdate3L ),
       ENTRY( "TestAsyncUpdate4L", CUpdateTrigger::TestAsyncUpdate4L ),
       ENTRY( "TestAsyncUpdate5L", CUpdateTrigger::TestAsyncUpdate5L ),
       ENTRY( "TestAsyncUpdate6L", CUpdateTrigger::TestAsyncUpdate6L ),
       ENTRY( "TestAsyncUpdate7L", CUpdateTrigger::TestAsyncUpdate7L ),
       ENTRY( "TestAsyncUpdate8L", CUpdateTrigger::TestAsyncUpdate8L ),
       ENTRY( "TestAsyncUpdate9L", CUpdateTrigger::TestAsyncUpdate9L ),
       ENTRY( "TestAsyncUpdate10L", CUpdateTrigger::TestAsyncUpdate10L ),
       
       };

    const TInt count = sizeof( KFunctions ) / 
                        sizeof( TStifFunctionInfo );

    return RunInternalL( KFunctions, count, aItem );

    }

// -----------------------------------------------------------------------------
// CUpdateTrigger::ExampleL
// Example test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CUpdateTrigger::ExampleL( CStifItemParser& aItem )
    {

    // Print to UI
    _LIT( KUpdateTrigger, "UpdateTrigger" );
    _LIT( KExample, "In Example" );
    TestModuleIf().Printf( 0, KUpdateTrigger, KExample );
    // Print to log file
    iLog->Log( KExample );

    TInt i = 0;
    TPtrC string;
    _LIT( KParam, "Param[%i]: %S" );
    while ( aItem.GetNextString ( string ) == KErrNone )
        {
        TestModuleIf().Printf( i, KUpdateTrigger, 
                                KParam, i, &string );
        i++;
        }

    return KErrNone;

    }
    
    //Updating attributes of a startup trigger - TC_LBT012_01
     TInt CUpdateTrigger::TCLBTFW001_testL( CStifItemParser& /* aItem */ )
    {

 	
 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
     
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 //	  #if 0
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
   // set commandline
   trig->SetCommandLineL(_L("commandline1"));
    
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object

    //Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    trig->SetManagerUi(aManagerUi);   
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
     TLbtTriggerId trigId,trigId2;   
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
    User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    newtrig->SetCommandLineL(_L("Commandline2" ));
    TCoordinate newcoordinate(10,10);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,500);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnExit);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
//	trigId = 1;
    newtrig->SetId(trigId);
   
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition
    |CLbtTriggerEntry::EAttributeStartUpCommandLine,ELbtTrue
    );
   // lbt.UpdateTriggerL(*newtrig);
    iLog->Log(_L("After UpdateTriggerL "));
    
    iLog->Log(_L("Before GetTriggerLC "));
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    
    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
    //Check the name of the trigger
    TDesC Name2 =TrigEntry->Name(); 
    if(TrigEntry->Name()!=newtrig->Name()) 
    {
    	return -99;
    }
    //Check the state of the trigger
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
    if(State2 !=newtrig->State())
    {
    	return -99;
    }
    //Check type of the trigger
    TInt Type2 = TrigEntry ->Type();
    if(Type2 != newtrig->Type())
    {
    	return -99;
    }
    //Check Condition of the trigger
	CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
	CLbtTriggerConditionArea::TDirection direction;
	direction = Condition2->Direction();
	if(direction!=CLbtTriggerConditionArea::EFireOnExit)
	{
		return -99;
	}
	CLbtGeoAreaBase* area = Condition2->TriggerArea();
	if(area ->Type()!=CLbtGeoAreaBase::ECircle )
	{
		return -99;
	}
	
	CLbtGeoCircle* circle2 = static_cast <CLbtGeoCircle*>(area);
	TCoordinate center = newcircle->Center();
	TCoordinate center2 = circle2->Center();
	TReal32 distance;
	center2.Distance(center,distance);
	if(distance!=0)
	{
		return -99;
	}
	TReal radius = circle2->Radius();
	if(radius != newcircle->Radius())
	{
		return -99;
	}
	if((static_cast <CLbtStartupTrigger*>(TrigEntry))->CommandLine()!=newtrig->CommandLine()) 
    {
    	return -99;
    }
	

    //Check trigger Id
    trigId2 = TrigEntry->Id();
    if(trigId !=trigId2)
    {
    	return -99;
    }
    
    CleanupStack::PopAndDestroy( 1 );//Triginfo
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
   // #endif
    CleanupStack::Pop( &lbt );
    lbt.Close();
    
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
   
    iLog->Log(_L("Test passed "));
    return KErrNone; 
      
    }
    
    
      //Updating attributes of a session trigger - TC_LBT012_02
     TInt CUpdateTrigger::TCLBTFW002_testL( CStifItemParser& /* aItem */ )
    {
 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
      
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnExit);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId,trigId2;
    trig->SetManagerUi(aManagerUi);   
        
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtSessionTrigger* newtrig = CLbtSessionTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,500);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object

    newtrig->SetId(trigId);
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition,ELbtTrue);
    iLog->Log(_L("After UpdateTriggerL "));
    
    iLog->Log(_L("Before GetTriggerLC "));
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    
    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
    //Check the name of the trigger
    TDesC Name2 =TrigEntry->Name(); 
    if(TrigEntry->Name()!=newtrig->Name()) 
    {
    	return -99;
    }
    //Check the state of the trigger
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
    if(State2 !=newtrig->State())
    {
    	return -99;
    }
    //Check type of the trigger
    TInt Type2 = TrigEntry ->Type();
    if(Type2 != newtrig->Type())
    {
    	return -99;
    }
    //Check Condition of the trigger
	CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
	CLbtTriggerConditionArea::TDirection direction;
	direction = Condition2->Direction();
	if(direction!=CLbtTriggerConditionArea::EFireOnEnter)
	{
		return -99;
	}
	CLbtGeoAreaBase* area = Condition2->TriggerArea();
	if(area ->Type()!=CLbtGeoAreaBase::ECircle )
	{
		return -99;
	}
	
	CLbtGeoCircle* circle2 = static_cast <CLbtGeoCircle*>(area);
	TCoordinate center = newcircle->Center();
	TCoordinate center2 = circle2->Center();
	TReal32 distance;
	center2.Distance(center,distance);
	if(distance!=0)
	{
		return -99;
	}
	TReal radius = circle2->Radius();
	if(radius != newcircle->Radius())
	{
		return -99;
	}

    //Check trigger Id
    trigId2 = TrigEntry->Id();
    if(trigId !=trigId2)
    {
    	return -99;
    }
    
     CleanupStack::PopAndDestroy( 1 );//Triginfo
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 
      
    }
    
    //Updating Nonmodifiable attributes of a startup trigger - TC_LBT012_03
    TInt CUpdateTrigger::TCLBTFW003_testL( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
        
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,500);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
    
    newtrig->SetManagerUi(TUid::Uid(0x12345678));

    newtrig->SetId(trigId);
    
    newtrig->SetRequestorL(CRequestor::ERequestorContact,CRequestor::EFormatTelephone,_L("Test2") );
    _LIT( KNewTriggerHandlingProcessName, "ConsoleUI.exe" );
    
    TSecureId newsecureid;
    newtrig->SetProcessId(KNewTriggerHandlingProcessName,newsecureid);
       
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    TRAPD(error,lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeRequestor
    |CLbtTriggerEntry::EAttributeManagerUi
    |CLbtTriggerEntry::EAttributeStartUpProcessId,ELbtTrue
    ));
    if(error==KErrAccessDenied)
    {
    iLog->Log(_L("After UpdateTriggerL "));
      
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
      CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    CleanupStack::PopAndDestroy(1);
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
          
    }
    
    
      //Trying to update Nonmodifiable attributes of session trigger - TC_LBT012_04
     TInt CUpdateTrigger::TCLBTFW004_testL( CStifItemParser& /* aItem */ )
    {
 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
    //Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);      
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtSessionTrigger* newtrig = CLbtSessionTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,500);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
    
    newtrig->SetManagerUi(TUid::Uid(0x12345678));

    newtrig->SetId(trigId);
    
    newtrig->SetRequestorL(CRequestor::ERequestorContact,CRequestor::EFormatTelephone,_L("Test2") );
      
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    TRAPD(error,lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeRequestor
    |CLbtTriggerEntry::EAttributeManagerUi
    |CLbtTriggerEntry::EAttributeStartUpProcessId,ELbtTrue
    ));
    if(error==KErrAccessDenied)
    {
    iLog->Log(_L("After UpdateTriggerL "));
      
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
      
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
      
      
    }
    
    
     //Trying to update trigger with zero length name - TC_LBT012_05
      TInt CUpdateTrigger::TCLBTFW005_testL( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
        
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L(""));
    
    newtrig->SetId(trigId);
    
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    TRAPD(error,lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName,ELbtTrue));
    if(error == KErrArgument)
    {
    iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
    
      
    }
    
    
     //Trying to update trigger without defining the trigger area- TC_LBT012_06
      TInt CUpdateTrigger::TCLBTFW006_testL( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
    //Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);      
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    
       
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL();
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
    
    newtrig->SetId(trigId);
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
   
    TRAPD(error,lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition,ELbtTrue));
    if(error == KErrArgument)
    {
    iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
      
    }
    
    
     //Trying to update trigger with trigger area less than minimum size of trigger area - TC_LBT012_07
      TInt CUpdateTrigger::TCLBTFW007_testL( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
        
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,0);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
    newtrig->SetId(trigId);
      
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    TRAPD(error,lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition,ELbtTrue));
    if(error == KErrTriggerAreaTooSmall)
    {
    iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
      
    }
    
    
      //Trying to update trigger without opening the subsession - TC_LBT012_08
      TInt CUpdateTrigger::TCLBTFW008_testL( CStifItemParser& /* aItem */ )
    {
 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect());
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	     
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,1);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
    
     TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 2); 
      
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    lbt.UpdateTriggerL(*newtrig,
    CLbtTriggerEntry::EAttributeCondition,ELbtTrue);
    iLog->Log(_L("After UpdateTriggerL "));
    
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 
      
    }
    
    
      //Trying to update trigger when it is not available - TC_LBT012_09
      TInt CUpdateTrigger::TCLBTFW009_testL( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,1);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
     newtrig->SetId(99999999);
      
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    TRAPD(error,lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition,ELbtTrue));
    if(error == KErrNotFound)
    {
    iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
    
      
    
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
      
    }
    
    
        //Trying to update trigger owned by another process - TC_LBT012_10
      TInt CUpdateTrigger::TCLBTFW010_testL( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
     /***************Another process Creating a trigger************/
     	 iLog->Log(_L("Before Create Trigger"));
     _LIT( KFilename,"CreateTest.exe" );
     RProcess proc;
     TInt retVal =proc.Create(KFilename,KNullDesC);
     TInt triggerId = KLbtNullTriggerId;
     if(retVal == KErrNone)
         {
         proc.Resume();
         TRequestStatus status = KRequestPending;
         proc.Rendezvous(status);
         User::WaitForRequest(status);
         triggerId = status.Int();
         }   
      
     /***************************End*******************************/
 	     
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,1);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
     newtrig->SetId(triggerId);
      
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    TRAPD(error,lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition,ELbtTrue));
    if(error == KErrNotFound)
    {
    iLog->Log(_L("After UpdateTriggerL "));
    
   
    
   
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
    
       
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
      
    }
    
    
         //Updating state of all the triggers owned by the client synchronously- TC_LBT012_11
      TInt CUpdateTrigger::TCLBTFW011_testL( CStifItemParser& /* aItem */ )
    {

 	RLbtServer lbtserver;
    RLbt lbt;
    iLog->Log(_L("Before Connect"));
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    iLog->Log(_L("Before Open"));
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
 	 iLog->Log(_L("Before Create Trigger"));
     _LIT( KFilename,"CreateTest.exe" );
    RProcess proc;
    TInt retVal =proc.Create(KFilename,KNullDesC);
    
    if(retVal == KErrNone)
        {
		proc.Resume();
		TRequestStatus status = KRequestPending;
		proc.Rendezvous(status);
		User::WaitForRequest(status);
	    }	
    iLog->Log(_L("Trigger Created"));
        
     	  //Construct a session trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetState(CLbtTriggerEntry::EStateDisabled);
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
     trig->SetManagerUi(aManagerUi);   
        
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
    //For reproducing crash for loop added
    for(int i=0;i<15;i++)  
    {
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );	
    }
        
        
    lbt.SetTriggersStateL(CLbtTriggerEntry::EStateEnabled,ELbtTrue);   
    
    lbt.SetTriggersStateL(CLbtTriggerEntry::EStateDisabled,ELbtTrue);  
    
    lbt.SetTriggersStateL(CLbtTriggerEntry::EStateEnabled,ELbtTrue);    
         
      
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    iLog->Log(_L("Before GetTriggersL"));
    lbt.GetTriggersL(trigInfoList);
    iLog->Log(_L("After GetTriggersL"));
    
    //Do something with the trigger list
   
    TInt count = trigInfoList.Count();
    for ( TInt i = 0; i < count; i++ )
    {
    	CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
    	if(CLbtTriggerEntry::EStateEnabled!=(TrigEntry->State()))
    	{
    		return -99;
    	}
    }
    
    //free memory
    for ( TInt i = 0; i < count; i++ )
        {
        delete trigInfoList[i];
        }
    trigInfoList.Close();
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
	CleanupStack::PopAndDestroy(&lbt);
    CleanupStack::PopAndDestroy(&lbtserver);
    return KErrNone;  
    }
    
    
         //Updating state of  the triggers filtered based on attribute filter - TC_LBT012_12
    TInt CUpdateTrigger::TCLBTFW012_testL( CStifItemParser& /* aItem */ )
    {
	RLbtServer lbtserver;
    RLbt lbt;
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
 	  lbt.DeleteTriggersL();
     	  //Construct a session trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetState(CLbtTriggerEntry::EStateDisabled);
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId;
     trig->SetManagerUi(aManagerUi);   
     //Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);     
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    
     
    //Construct an attribute filter
    CLbtTriggerFilterByAttribute* attribFilter = 
    CLbtTriggerFilterByAttribute::NewL();
    CleanupStack::PushL( attribFilter );
    attribFilter->AddTriggerStateL( CLbtTriggerEntry::EStateDisabled );
    attribFilter->AddTriggerTypeL( CLbtTriggerEntry::ETypeSession );
    
    lbt.SetTriggersStateL(CLbtTriggerEntry::EStateEnabled,ELbtTrue,attribFilter);   
    
    CleanupStack::Pop( attribFilter );   
    
    
    lbt.GetTriggersL(trigInfoList);    
       

    //Do something with the trigger list
    TInt count = trigInfoList.Count();
    for ( TInt i = 0; i < count; i++ )
    {
	    	CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
	        
	     //Check type of the trigger
	    TInt Type2 = TrigEntry ->Type();
	    if(Type2 ==CLbtTriggerEntry::ETypeStartup)
	    {
		    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
		    if(State2 !=CLbtTriggerEntry::EStateEnabled)
		    {
		    	return -99;
		    }
	    }
  
    }
    
        //free memory
    for ( TInt i = 0; i < count; i++ )
        {
        delete trigInfoList[i];
        }
    trigInfoList.Close();
	CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy(&lbt);
    CleanupStack::PopAndDestroy(&lbtserver);	
     return KErrNone; 
 
    }
    
    
         //Updating state of  the triggers filtered based on area filter - TC_LBT012_13
      TInt CUpdateTrigger::TCLBTFW013_testL( CStifItemParser& /* aItem */ )
    {
	RLbtServer lbtserver;
    RLbt lbt;
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
 	 
    TRAP_IGNORE(lbt.DeleteTriggersL());
    
    	  //Construct a session trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetState(CLbtTriggerEntry::EStateDisabled);
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId;
     trig->SetManagerUi(aManagerUi);   
     //Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);     
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
    
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    
    
    
    //Construct an area filter
    CLbtTriggerFilterByArea* areaFilter = 
        CLbtTriggerFilterByArea::NewL();
    CleanupStack::PushL( areaFilter );
    CLbtGeoCircle* area = CLbtGeoCircle::NewL( 
        TCoordinate( 62.5285,23.9385,0 ),
        1000 );
    areaFilter->SetArea( area ); 
    
     lbt.SetTriggersStateL(CLbtTriggerEntry::EStateEnabled,ELbtTrue,areaFilter);   
     
     CleanupStack::Pop( areaFilter ); 
     
     lbt.GetTriggersL(trigInfoList );
        
    
    TInt count = trigInfoList.Count();
   for ( TInt i = 0; i < count; i++ )
    {
	    	CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
	   //Check area of the trigger
		CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());

		CLbtGeoAreaBase* area = Condition2->TriggerArea();
		if(area ->Type()!=CLbtGeoAreaBase::ECircle )
		{
			return -99;
		}
		
		CLbtGeoCircle* circle2 = static_cast <CLbtGeoCircle*>(area);

		TCoordinate center2 = circle2->Center();
		TReal32 distance;
		center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
		if(distance==0)
		{
			CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
		    if(State2 !=CLbtTriggerEntry::EStateEnabled)
		    {
		    	 CleanupStack::PopAndDestroy( notifier );
			    CleanupStack::PopAndDestroy( trig );
			   // CleanupStack::PopAndDestroy( 1 );
			    CleanupStack::PopAndDestroy( &lbt );
			    CleanupStack::PopAndDestroy( &lbtserver );
		    	return -99;
		    }
		}
		
	    
	  }
       
    //free memory
    for ( TInt i = 0; i < count; i++ )
        {
        delete trigInfoList[i];
        }
    trigInfoList.Close();
   CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
   // CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
	return KErrNone;
 
    }
    
    
         //Updating state of  the triggers filtered based on composite filter - TC_LBT012_14
      TInt CUpdateTrigger::TCLBTFW014_testL( CStifItemParser& /* aItem */ )
    {
	RLbtServer lbtserver;
    RLbt lbt;
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
 	TRAP_IGNORE( lbt.DeleteTriggersL() );
      	  //Construct a session trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetState(CLbtTriggerEntry::EStateDisabled);
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId;
     trig->SetManagerUi(aManagerUi);   
     //Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);     
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
    
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    
   
     //Construct an attribute filter
    CLbtTriggerFilterByAttribute* attribFilter = 
    CLbtTriggerFilterByAttribute::NewL();
    CleanupStack::PushL( attribFilter );
    attribFilter->AddTriggerStateL( CLbtTriggerEntry::EStateDisabled );
    attribFilter->AddTriggerTypeL( CLbtTriggerEntry::ETypeSession );
        
    //Construct an area filter
    CLbtTriggerFilterByArea* areaFilter = 
        CLbtTriggerFilterByArea::NewL();
    CleanupStack::PushL( areaFilter );
    CLbtGeoCircle* area = CLbtGeoCircle::NewL( 
        TCoordinate( 61.5,24.3,0 ),
        1000 );
    areaFilter->SetArea( area ); 
    
    //Construct a composite filter
    CLbtTriggerFilterComposite* compositeFilter = 
        CLbtTriggerFilterComposite::NewL( 
            CLbtTriggerFilterComposite::ECompositionTypeAnd );
    
    CleanupStack::PushL( compositeFilter );
    
    //Add filters to the list option object
    compositeFilter->AddFilterL( areaFilter ); 
    
    
    compositeFilter->AddFilterL( attribFilter ); 
    
    lbt.SetTriggersStateL(CLbtTriggerEntry::EStateEnabled,ELbtTrue,compositeFilter);  
    
    CleanupStack::Pop( compositeFilter );
    CleanupStack::Pop( areaFilter ); 
    CleanupStack::Pop( attribFilter );     
    
        
    lbt.GetTriggersL(trigInfoList );
    
    
    
    //Do something with the trigger list
    TInt count = trigInfoList.Count();
    for ( TInt i = 0; i < count; i++ )
    {
	    	CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
	        
	   
	    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
	    if(State2 !=CLbtTriggerEntry::EStateEnabled)
	    {
	    	return -99;
	    } 
	     
	    TInt Type2 = TrigEntry ->Type();
	    
	    CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());

		CLbtGeoAreaBase* area = Condition2->TriggerArea();
		CLbtGeoCircle* circle2 = static_cast <CLbtGeoCircle*>(area);

		TCoordinate center2 = circle2->Center();
		TReal32 distance;
		center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
	    if(Type2 ==CLbtTriggerEntry::ETypeStartup && distance==0)
	    {
	    	CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
		    if(State2 !=CLbtTriggerEntry::EStateEnabled)
		    {
		    	return -99;
		    } 
	    }
	    
    }
    
    //free memory
    for ( TInt i = 0; i < count; i++ )
        {
        delete trigInfoList[i];
        }
    trigInfoList.Close();
     CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
   // CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
	return KErrNone;
 
    }
    
    
         //Updating state of all the triggers owned by the client asynchronously - TC_LBT012_15
      TInt CUpdateTrigger::TCLBTFW015_testL( CStifItemParser& /* aItem */ )
    {
	RLbtServer lbtserver;
    RLbt lbt;
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
 	 TCoordinate coordinate(65.5285,23.9385);
       	  //Construct a session trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    
    // set condition
    
   // TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetState(CLbtTriggerEntry::EStateDisabled);
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId;
     trig->SetManagerUi(aManagerUi);   
     //Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);     
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
   
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    
    // CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
   // CleanupStack::PushL( notifier );
    
   // CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
    notifier->UpdateTriggersState(lbt,CLbtTriggerEntry::EStateEnabled,wait,ELbtTrue);
    wait->Start();
    
    lbt.GetTriggersL(trigInfoList );
    //Do something with the trigger list
    
    
    TInt count = trigInfoList.Count();
     for ( TInt i = 0; i < count; i++ )
     {
     	CLbtTriggerEntry *TrigEntry = trigInfoList[i]->TriggerEntry();
    	if(CLbtTriggerEntry::EStateEnabled!=(TrigEntry->State()))
    	{
    		return -99;
    	}
    	TLbtTriggerDynamicInfo * dyninfo = trigInfoList[i] -> DynInfo() ;
    
     }
    
    //free memory
    for ( TInt i = 0; i < count; i++ )
        {
        delete trigInfoList[i];
        }
    trigInfoList.Close();
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
	return KErrNone;
 
    }
    
    //Updating state of a trigger - TC_LBT012_16
      TInt CUpdateTrigger::TCLBTFW016_testL( CStifItemParser& /* aItem */ )
    {
     RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
    trig->SetState(CLbtTriggerEntry::EStateDisabled);    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   lbt.SetTriggerStateL (trigId,CLbtTriggerEntry::EStateEnabled,ELbtTrue);
   CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    if(TrigEntry->State()==CLbtTriggerEntry::EStateEnabled)
    {
    CleanupStack::PopAndDestroy( 1 );
      CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
    else
    {
    	CleanupStack::PopAndDestroy( 1 );
      CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return -99; 	
    }
    
   }
      
     /* 1)Update trigger with FireOnupdate = ELbtTrue for startup trigger and set state to Enabled(coordinate based)
      2)Update trigger with FireOnupdate = ELbtTrue for startup trigger and set state to Disabled(coordinate based)
      3)Update trigger with FireOnupdate = ELbtFalse for startup trigger and set state to Enabled(coordinate based)
      4)Update trigger with FireOnupdate = ELbtFalse for startup trigger and set state to Disabled(coordinate based)*/
      
     TInt CUpdateTrigger::TestFireOnUpdate1L( CStifItemParser&  aItem  )
     {
  	 RLbtServer lbtserver;
  	 RLbt lbt;
  	 TInt value ;
  	 aItem.GetNextInt(value);
  	 
  	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
	 
  	 iLog->Log(_L("Before Connect "));
  	 
  	 User::LeaveIfError( lbtserver.Connect() );
  	 iLog->Log(_L("After Connect "));
      CleanupClosePushL( lbtserver );
      
  	 User::LeaveIfError( lbt.Open( lbtserver ) );
  	 CleanupClosePushL( lbt );
  	 iLog->Log(_L("After RLbt::Open "));
  	
  	 TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
  //	  #if 0
 	  //Construct a startup trigger
     CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
     
     //Push to cleanup stack
     CleanupStack::PushL( trig );
     
     // Set Name
     trig->SetNameL(_L("Trigger1"));
     _LIT( KMyTriggerHandlingProcessName, "About.exe" );
     
     TSecureId secureid;
     trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    // set commandline
    trig->SetCommandLineL(_L("commandline1"));
     
        
     // set condition
     
     TCoordinate coordinate(62.5285,23.9385);
     
     CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
     CleanupStack::PushL( circle );
     
     TUid aManagerUi = TUid::Uid(0x87654321);     
     // ownership of circle object transferred to the condition object
     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                 circle,
                                                 CLbtTriggerConditionArea::EFireOnEnter);
         
     CleanupStack::Pop( circle );
     
     trig->SetCondition(condition); // ownership transferred to object

     //Set Requestor
  	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
 	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
 	TBuf<KLbtMaxNameLength> ReqData=_L("");
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
     trig->SetManagerUi(aManagerUi);   
     
     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
     CleanupStack::PushL( notifier );
     
     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
      TLbtTriggerId trigId,trigId2;   
     notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
     wait->Start( );
     User::After(5000000);
     
    //**************New Trigger Entry**************/ 
     CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
     newtrig->SetNameL(_L("TriggerTest"));
     if(value == 1 || value ==3)
     {
     newtrig->SetState(CLbtTriggerEntry::EStateEnabled);
     }
     else if(value == 2 || value ==4)
     {
     newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
     }
     newtrig->SetCommandLineL(_L("Commandline2" ));
    
     newtrig->SetId(trigId);
    
     /***************************End*******************/
     iLog->Log(_L("Before UpdateTriggerL "));
     if(value == 1 || value ==2)
    {	 
     lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
     |CLbtTriggerEntry::EAttributeState
     |CLbtTriggerEntry::EAttributeStartUpCommandLine,ELbtTrue
     );
    }
     else if(value == 3 || value ==4)
    {	 
     lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
     |CLbtTriggerEntry::EAttributeState
     |CLbtTriggerEntry::EAttributeStartUpCommandLine,ELbtFalse
     );
    }
    // lbt.UpdateTriggerL(*newtrig);
     iLog->Log(_L("After UpdateTriggerL "));
     if(value==1)
     {
     	notifier->StartNotification( wait );
  		wait->Start( );
     }
     iLog->Log(_L("Before GetTriggerLC "));
     CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
     Triginfo = lbt.GetTriggerLC(trigId);
     iLog->Log(_L("After GetTriggerLC "));
     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
     
     TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
     //Check the name of the trigger
     TDesC Name2 =TrigEntry->Name(); 
     if(TrigEntry->Name()!=newtrig->Name()) 
     {
     	return -99;
     }
     //Check the state of the trigger
     CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
     if(State2 !=newtrig->State())
     {
     	return -99;
     }
     //Check type of the trigger
     TInt Type2 = TrigEntry ->Type();
     if(Type2 != newtrig->Type())
     {
     	return -99;
     }
   
 	if((static_cast <CLbtStartupTrigger*>(TrigEntry))->CommandLine()!=newtrig->CommandLine()) 
     {
     	return -99;
     }
 	

     //Check trigger Id
     trigId2 = TrigEntry->Id();
     if(trigId !=trigId2)
     {
     	return -99;
     }
     
     CleanupStack::PopAndDestroy( 1 );//Triginfo
     CleanupStack::PopAndDestroy( notifier );
     CleanupStack::PopAndDestroy( trig );
    // #endif
     CleanupStack::Pop( &lbt );
     lbt.Close();
     
     CleanupStack::PopAndDestroy( &lbtserver );
    // delete wait;
    
     iLog->Log(_L("Test passed "));
     return KErrNone; 
       
     }    
      
      
      /* 
	1)Update trigger with FireOnupdate = ELbtTrue for session trigger and set state to Enabled(coordinate based)
	2)Update trigger with FireOnupdate = ELbtTrue for session trigger and set state to Disabled(coordinate based)
	3)Update trigger with FireOnupdate = ELbtFalse for session trigger and set state to Enabled(coordinate based)
	4)Update trigger with FireOnupdate = ELbtFalse for session trigger and set state to Disabled(coordinate based)*/
      TInt CUpdateTrigger::TestFireOnUpdate2L( CStifItemParser&  aItem  )
     {
  	 RLbtServer lbtserver;
  	 RLbt lbt;
  	 TInt value ;
  	 aItem.GetNextInt(value);
  	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
  	 
  	 iLog->Log(_L("Before Connect "));
  	 User::LeaveIfError( lbtserver.Connect() );
  	 iLog->Log(_L("After Connect "));
      CleanupClosePushL( lbtserver );
      
  	 User::LeaveIfError( lbt.Open( lbtserver ) );
  	 CleanupClosePushL( lbt );
  	 iLog->Log(_L("After RLbt::Open "));
  	
  	 TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
  //	  #if 0
 	  //Construct a startup trigger
     CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
     
     //Push to cleanup stack
     CleanupStack::PushL( trig );
     
     // Set Name
     trig->SetNameL(_L("Trigger1"));
    
     // set condition
     
     TCoordinate coordinate(62.5285,23.9385);
     
     CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
     CleanupStack::PushL( circle );
     
     TUid aManagerUi = TUid::Uid(0x87654321);     
     // ownership of circle object transferred to the condition object
     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                 circle,
                                                 CLbtTriggerConditionArea::EFireOnEnter);
         
     CleanupStack::Pop( circle );
     
     trig->SetCondition(condition); // ownership transferred to object

     //Set Requestor
  	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
 	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
 	TBuf<KLbtMaxNameLength> ReqData=_L("");
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
     trig->SetManagerUi(aManagerUi);   
     
     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
     CleanupStack::PushL( notifier );
     
     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
      TLbtTriggerId trigId,trigId2;   
     notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
     wait->Start( );
     User::After(5000000);
     
    //**************New Trigger Entry**************/ 
     CLbtSessionTrigger* newtrig = CLbtSessionTrigger::NewL();
     newtrig->SetNameL(_L("TriggerTest"));
     if(value == 1 || value ==3)
     {
     newtrig->SetState(CLbtTriggerEntry::EStateEnabled);
     }
     else if(value == 2 || value ==4)
     {
     newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
     }
         
     newtrig->SetId(trigId);
    
     /***************************End*******************/
     iLog->Log(_L("Before UpdateTriggerL "));
     if(value == 1 || value ==2)
    {	 
     lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
     |CLbtTriggerEntry::EAttributeState
     ,ELbtTrue
     );
    }
     else if(value == 3 || value ==4)
    {	 
     lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
     |CLbtTriggerEntry::EAttributeState
     ,ELbtFalse
     );
    }
    // lbt.UpdateTriggerL(*newtrig);
     iLog->Log(_L("After UpdateTriggerL "));
     if(value ==1)
     {
     	notifier->StartNotification( wait );
  		wait->Start( );
     }
     iLog->Log(_L("Before GetTriggerLC "));
     CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
     Triginfo = lbt.GetTriggerLC(trigId);
     iLog->Log(_L("After GetTriggerLC "));
     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
     
     TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
     //Check the name of the trigger
     TDesC Name2 =TrigEntry->Name(); 
     if(TrigEntry->Name()!=newtrig->Name()) 
     {
     	return -99;
     }
     //Check the state of the trigger
     CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
     if(State2 !=newtrig->State())
     {
     	return -99;
     }
     //Check type of the trigger
     TInt Type2 = TrigEntry ->Type();
     if(Type2 != newtrig->Type())
     {
     	return -99;
     }
   
 
     //Check trigger Id
     trigId2 = TrigEntry->Id();
     if(trigId !=trigId2)
     {
     	return -99;
     }
     
     CleanupStack::PopAndDestroy( 1 );//Triginfo
     CleanupStack::PopAndDestroy( notifier );
     CleanupStack::PopAndDestroy( trig );
    // #endif
     CleanupStack::Pop( &lbt );
     lbt.Close();
     
     CleanupStack::PopAndDestroy( &lbtserver );
    // delete wait;
    
     iLog->Log(_L("Test passed "));
     return KErrNone; 
       
     }     
    /*
    9)SetTriggerState to Enabled with FireOnupdate = ELbtTrue --for startup trigger(coordinate based)
	10)SetTriggerState to Disabled with FireOnupdate = ELbtTrue --for startup trigger(coordinate based)
	11)SetTriggerState to Enabled with FireOnupdate = ELbtFalse --for startup trigger(coordinate based)
	12)SetTriggerState to Disabled with FireOnupdate = ELbtFalse --for startup trigger(coordinate based)
    */  
      
    TInt CUpdateTrigger::TestFireOnUpdate3L( CStifItemParser&  aItem  )
    {
     RLbtServer lbtserver;
 	 RLbt lbt;
 	 TInt value ;
 	 aItem.GetNextInt(value);
 	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
 	 
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
    trig->SetState(CLbtTriggerEntry::EStateDisabled);    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
	   if(value ==1) 
	   {	   
	   lbt.SetTriggerStateL (trigId,CLbtTriggerEntry::EStateEnabled,ELbtTrue);
	   }
	   else if(value ==2) 
	   {	   
	   lbt.SetTriggerStateL (trigId,CLbtTriggerEntry::EStateDisabled,ELbtTrue);
	   }
	   else if(value ==3) 
	   {	   
	   lbt.SetTriggerStateL (trigId,CLbtTriggerEntry::EStateEnabled,ELbtFalse);
	   }
	   else if(value ==4) 
	   {	   
	   lbt.SetTriggerStateL (trigId,CLbtTriggerEntry::EStateDisabled,ELbtFalse);
	   }
   CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    if(TrigEntry->State()==CLbtTriggerEntry::EStateEnabled &&(value ==1 || value==3))
    {
    if(value ==1)
     {
     	notifier->StartNotification( wait );
  		wait->Start( );
     }
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
    else if (TrigEntry->State()==CLbtTriggerEntry::EStateDisabled &&(value ==2 || value==4))
    {
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
    else
    {
    	
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return -99; 	
    }
    
   }  
    
    /*
    13)SetTriggerState to Enabled with FireOnupdate = ELbtTrue --for session trigger(coordinate based)
	14)SetTriggerState to Disabled  with FireOnupdate = ELbtTrue --for session trigger(coordinate based)
	15)SetTriggerState  to Enabled with FireOnupdate = ELbtFalse --for session trigger(coordinate based)
	16)SetTriggerState  to Disabled with FireOnupdate = ELbtFalse --for session trigger(coordinate based)
    */
    
    TInt CUpdateTrigger::TestFireOnUpdate4L( CStifItemParser&  aItem  )
    {
     RLbtServer lbtserver;
 	 RLbt lbt;
 	 TInt value ;
 	 aItem.GetNextInt(value);
 	  EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
 	 
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	TRAP_IGNORE(lbt.DeleteTriggersL()) ;        
	  //Construct a startup trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
    trig->SetState(CLbtTriggerEntry::EStateDisabled);    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
   if(value ==1) 
   {	   
   lbt.SetTriggerStateL (trigId,CLbtTriggerEntry::EStateEnabled,ELbtTrue);
   }
   else if(value ==2) 
   {	   
   lbt.SetTriggerStateL (trigId,CLbtTriggerEntry::EStateDisabled,ELbtTrue);
   }
   else if(value ==3) 
   {	   
   lbt.SetTriggerStateL (trigId,CLbtTriggerEntry::EStateEnabled,ELbtFalse);
   }
   else if(value ==4) 
   {	   
   lbt.SetTriggerStateL (trigId,CLbtTriggerEntry::EStateDisabled,ELbtFalse);
   }
   CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    if(TrigEntry->State()==CLbtTriggerEntry::EStateEnabled &&(value ==1 || value==3))
    {
    if(value ==1)
     {
     	notifier->StartNotification( wait );
  		wait->Start( );
     }
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
    else if (TrigEntry->State()==CLbtTriggerEntry::EStateDisabled &&(value ==2 || value==4))
    {
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
    else
    {
    	
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return -99; 	
    }
    
   }  
    /*
    17)SetTriggersStateL  with FireOnupdate = ELbtTrue and setstate as enabled
	18)SetTriggersStateL  with FireOnupdate = ELbtTrue set state as disabled
	19)SetTriggersStateL   with FireOnupdate = ELbtFalse and setstate as enabled
	20)SetTriggersStateL  with FireOnupdate = ELbtFalse and set state as disabled
    */  
    
    TInt CUpdateTrigger::TestFireOnUpdate5L( CStifItemParser&  aItem  )
    {
     RLbtServer lbtserver;
 	 RLbt lbt;
 	 TInt value ;
 	 aItem.GetNextInt(value);
 	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
 	 
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 TRAP_IGNORE(lbt.DeleteTriggersL()) ;     
	  //Construct a startup trigger
    CLbtStartupTrigger* startuptrig = CLbtStartupTrigger::NewL();
    //Construct a session trigger
    CLbtSessionTrigger* sessiontrig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( startuptrig );
    CleanupStack::PushL( sessiontrig );
    
    // Set Name
    startuptrig->SetNameL(_L("Trigger1"));
    sessiontrig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    startuptrig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate1(62.5285,23.9385);
    TCoordinate coordinate2(62.5285,23.9385);
    
    CLbtGeoCircle* circle1=CLbtGeoCircle::NewL(coordinate1,1000);
    CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate2,1000);
    CleanupStack::PushL( circle1 );
    CleanupStack::PushL( circle2 );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition1=CLbtTriggerConditionArea::NewL(
                                                circle1,
                                                CLbtTriggerConditionArea::EFireOnEnter);
                                                
    CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                circle2,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle2 );
    CleanupStack::Pop( circle1 );
    
    startuptrig->SetCondition(condition1); // ownership transferred to object
    sessiontrig->SetCondition(condition2); 
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	startuptrig->SetRequestorL(ReqType,ReqFormat,ReqData);  
	sessiontrig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    startuptrig->SetManagerUi(aManagerUi);   
    sessiontrig->SetManagerUi(aManagerUi);   
    startuptrig->SetState(CLbtTriggerEntry::EStateDisabled);    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate1 );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*startuptrig,trigId,EFalse,wait );
    wait->Start( );
    notifier->CreateTriggers( lbt,*sessiontrig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
	   if(value ==1) 
	   {	   
	   lbt.SetTriggersStateL (CLbtTriggerEntry::EStateEnabled,ELbtTrue);
	   }
	   else if(value ==2) 
	   {	   
	   lbt.SetTriggersStateL (CLbtTriggerEntry::EStateDisabled,ELbtTrue);
	   }
	   else if(value ==3) 
	   {	   
	   lbt.SetTriggersStateL (CLbtTriggerEntry::EStateEnabled,ELbtFalse);
	   }
	   else if(value ==4) 
	   {	   
	   lbt.SetTriggersStateL (CLbtTriggerEntry::EStateDisabled,ELbtFalse);
	   }
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    if(TrigEntry->State()==CLbtTriggerEntry::EStateEnabled &&(value ==1 || value==3))
    {
    if(value ==1)
     {
     	notifier->StartNotification( wait );
  		wait->Start( );
     }
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( sessiontrig );
    CleanupStack::PopAndDestroy( startuptrig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
    else if (TrigEntry->State()==CLbtTriggerEntry::EStateDisabled &&(value ==2 || value==4))
    {
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( sessiontrig );
    CleanupStack::PopAndDestroy( startuptrig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
    else
    {
    	
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( sessiontrig );
    CleanupStack::PopAndDestroy( startuptrig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return -99; 	
    }
    
   }  
   
   /*
    21)SetTriggersState asynchronous with FireOnupdate = ELbtTrue and setstate as enabled
	22)SetTriggersState asynchronous with FireOnupdate = ELbtTrue set state as disabled
	23)SetTriggersState asynchronous with FireOnupdate = ELbtFalse and setstate as enabled
	24)SetTriggersState asynchronous with FireOnupdate = ELbtFalse and set state as disabled
   */
   
   TInt CUpdateTrigger::TestFireOnUpdate6L( CStifItemParser&  aItem  )
    {
     RLbtServer lbtserver;
 	 RLbt lbt;
 	 TInt value ;
 	 aItem.GetNextInt(value);
 	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
 	 
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 TRAP_IGNORE(lbt.DeleteTriggersL()) ;    
	  //Construct a startup trigger
    CLbtStartupTrigger* startuptrig = CLbtStartupTrigger::NewL();
    //Construct a session trigger
    CLbtSessionTrigger* sessiontrig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( startuptrig );
    CleanupStack::PushL( sessiontrig );
    
    // Set Name
    startuptrig->SetNameL(_L("Trigger1"));
    sessiontrig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    startuptrig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate1(62.5285,23.9385);
    TCoordinate coordinate2(62.5285,23.9385);
    
    CLbtGeoCircle* circle1=CLbtGeoCircle::NewL(coordinate1,1000);
    CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate2,1000);
    CleanupStack::PushL( circle1 );
    CleanupStack::PushL( circle2 );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition1=CLbtTriggerConditionArea::NewL(
                                                circle1,
                                                CLbtTriggerConditionArea::EFireOnEnter);
                                                
    CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                circle2,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle2 );
    CleanupStack::Pop( circle1 );
    
    startuptrig->SetCondition(condition1); // ownership transferred to object
    sessiontrig->SetCondition(condition2); 
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	startuptrig->SetRequestorL(ReqType,ReqFormat,ReqData);  
	sessiontrig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId1,trigId2;
    startuptrig->SetManagerUi(aManagerUi);   
    sessiontrig->SetManagerUi(aManagerUi);   
    startuptrig->SetState(CLbtTriggerEntry::EStateDisabled);    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate1);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*startuptrig,trigId1,EFalse,wait );
    wait->Start( );
    notifier->CreateTriggers( lbt,*sessiontrig,trigId2,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
	   if(value ==1) 
	   {	   
	   notifier->UpdateTriggersState(lbt,CLbtTriggerEntry::EStateEnabled,wait,ELbtTrue);
	   }
	   else if(value ==2) 
	   {	   
	   notifier->UpdateTriggersState(lbt,CLbtTriggerEntry::EStateDisabled,wait,ELbtTrue);
	   }
	   else if(value ==3) 
	   {	   
	   notifier->UpdateTriggersState(lbt,CLbtTriggerEntry::EStateEnabled,wait,ELbtFalse);
	   }
	   else if(value ==4) 
	   {	   
	   notifier->UpdateTriggersState(lbt,CLbtTriggerEntry::EStateDisabled,wait,ELbtFalse);
	   }
	wait->Start( );   
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId1);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    if(TrigEntry->State()==CLbtTriggerEntry::EStateEnabled &&(value ==1 || value==3))
    {
    if(value ==1)
     {
     	notifier->StartNotification( wait );
  		wait->Start( );
     }
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( sessiontrig );
    CleanupStack::PopAndDestroy( startuptrig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
    else if (TrigEntry->State()==CLbtTriggerEntry::EStateDisabled &&(value ==2 || value==4))
    {
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( sessiontrig );
    CleanupStack::PopAndDestroy( startuptrig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
    else
    {
    	
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
   CleanupStack::PopAndDestroy( sessiontrig );
    CleanupStack::PopAndDestroy( startuptrig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return -99; 	
    }
    
   }  
   
  //25)Update trigger with FireOnupdate = ELbtTrue but Triggering machanism state is OFF 
   TInt CUpdateTrigger::TestFireOnUpdate7L( CStifItemParser&  aItem  )
     {
  	 RLbtServer lbtserver;
  	 RLbt lbt;
  	 
  	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
	 
  	 iLog->Log(_L("Before Connect "));
  	 
  	 User::LeaveIfError( lbtserver.Connect() );
  	 iLog->Log(_L("After Connect "));
      CleanupClosePushL( lbtserver );
      
  	 User::LeaveIfError( lbt.Open( lbtserver ) );
  	 CleanupClosePushL( lbt );
  	 iLog->Log(_L("After RLbt::Open "));
  	
  	 TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
  //	  #if 0
 	  //Construct a startup trigger
     CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
     
     //Push to cleanup stack
     CleanupStack::PushL( trig );
     
     // Set Name
     trig->SetNameL(_L("Trigger1"));
     _LIT( KMyTriggerHandlingProcessName, "About.exe" );
     
     TSecureId secureid;
     trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    // set commandline
    trig->SetCommandLineL(_L("commandline1"));
     
        
     // set condition
     
     TCoordinate coordinate(62.5285,23.9385);
     
     CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
     CleanupStack::PushL( circle );
     
     TUid aManagerUi = TUid::Uid(0x87654321);     
     // ownership of circle object transferred to the condition object
     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                 circle,
                                                 CLbtTriggerConditionArea::EFireOnEnter);
         
     CleanupStack::Pop( circle );
     
     trig->SetCondition(condition); // ownership transferred to object

     //Set Requestor
  	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
 	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
 	TBuf<KLbtMaxNameLength> ReqData=_L("");
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
     trig->SetManagerUi(aManagerUi);   
     
     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
     CleanupStack::PushL( notifier );
     
     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
      TLbtTriggerId trigId,trigId2;   
     notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
     wait->Start( );
     User::After(5000000);
     
    //**************New Trigger Entry**************/ 
     CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
     newtrig->SetNameL(_L("TriggerTest"));
     
     newtrig->SetState(CLbtTriggerEntry::EStateEnabled);
     
     newtrig->SetCommandLineL(_L("Commandline2" ));
    
     newtrig->SetId(trigId);
    
     /***************************End*******************/
     iLog->Log(_L("Before UpdateTriggerL "));
    	 
     lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
     |CLbtTriggerEntry::EAttributeState
     |CLbtTriggerEntry::EAttributeStartUpCommandLine,ELbtTrue
     );
   
    // lbt.UpdateTriggerL(*newtrig);
     iLog->Log(_L("After UpdateTriggerL "));
     
     	notifier->StartNotification( wait );
     	notifier->After(5000000);
  		wait->Start( );
     
     iLog->Log(_L("Before GetTriggerLC "));
     CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
     Triginfo = lbt.GetTriggerLC(trigId);
     iLog->Log(_L("After GetTriggerLC "));
     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
     
     TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
     //Check the name of the trigger
     TDesC Name2 =TrigEntry->Name(); 
     if(TrigEntry->Name()!=newtrig->Name()) 
     {
     	return -99;
     }
     //Check the state of the trigger
     CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
     if(State2 !=newtrig->State())
     {
     	return -99;
     }
     //Check type of the trigger
     TInt Type2 = TrigEntry ->Type();
     if(Type2 != newtrig->Type())
     {
     	return -99;
     }
   
 	if((static_cast <CLbtStartupTrigger*>(TrigEntry))->CommandLine()!=newtrig->CommandLine()) 
     {
     	return -99;
     }
 	

     //Check trigger Id
     trigId2 = TrigEntry->Id();
     if(trigId !=trigId2)
     {
     	return -99;
     }
     
     CleanupStack::PopAndDestroy( 1 );//Triginfo
     CleanupStack::PopAndDestroy( notifier );
     CleanupStack::PopAndDestroy( trig );
    // #endif
     CleanupStack::Pop( &lbt );
     lbt.Close();
     
     CleanupStack::PopAndDestroy( &lbtserver );
    // delete wait;
    
     iLog->Log(_L("Test passed "));
     return KErrNone; 
       
     }    
     
    //26)SetTriggerState  with FireOnupdate = ELbtTrue but Triggering machanism state is OFF 
    TInt CUpdateTrigger::TestFireOnUpdate8L( CStifItemParser&  aItem  )
    {
     RLbtServer lbtserver;
 	 RLbt lbt;
 	 
 	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
 	 
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
    trig->SetState(CLbtTriggerEntry::EStateDisabled);    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
	  	   
	   lbt.SetTriggerStateL (trigId,CLbtTriggerEntry::EStateEnabled,ELbtTrue);
	   
   CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    if(TrigEntry->State()==CLbtTriggerEntry::EStateEnabled )
    {
    
     	notifier->StartNotification( wait );
     	notifier->After(5000000);
  		wait->Start( );
    
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
   
    else
    {
    	
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return -99; 	
    }
    
   }  
   //27)SetTriggersStateL   with FireOnupdate = ELbtTrue but Triggering machanism state is OFF
   TInt CUpdateTrigger::TestFireOnUpdate9L( CStifItemParser&  aItem  )
    {
     RLbtServer lbtserver;
 	 RLbt lbt;
 	
 	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
 	 
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	TRAP_IGNORE(lbt.DeleteTriggersL()) ;        
	  //Construct a startup trigger
    CLbtStartupTrigger* startuptrig = CLbtStartupTrigger::NewL();
    //Construct a session trigger
    CLbtSessionTrigger* sessiontrig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( startuptrig );
    CleanupStack::PushL( sessiontrig );
    
    // Set Name
    startuptrig->SetNameL(_L("Trigger1"));
    sessiontrig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    startuptrig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate1(62.5285,23.9385);
    TCoordinate coordinate2(62.5285,23.9385);
    
    CLbtGeoCircle* circle1=CLbtGeoCircle::NewL(coordinate1,1000);
    CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate2,1000);
    CleanupStack::PushL( circle1 );
    CleanupStack::PushL( circle2 );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition1=CLbtTriggerConditionArea::NewL(
                                                circle1,
                                                CLbtTriggerConditionArea::EFireOnEnter);
                                                
    CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                circle2,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle2 );
    CleanupStack::Pop( circle1 );
    
    startuptrig->SetCondition(condition1); // ownership transferred to object
    sessiontrig->SetCondition(condition2); 
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	startuptrig->SetRequestorL(ReqType,ReqFormat,ReqData);  
	sessiontrig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    startuptrig->SetManagerUi(aManagerUi);   
    sessiontrig->SetManagerUi(aManagerUi);   
    startuptrig->SetState(CLbtTriggerEntry::EStateDisabled);    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate1 );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*startuptrig,trigId,EFalse,wait );
    wait->Start( );
    notifier->CreateTriggers( lbt,*sessiontrig,trigId,EFalse,wait );
    wait->Start( );
 	   
	lbt.SetTriggersStateL (CLbtTriggerEntry::EStateEnabled,ELbtTrue);
	   
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    if(TrigEntry->State()==CLbtTriggerEntry::EStateEnabled )
    {
    
    notifier->StartNotification( wait );
    notifier->After(5000000);
  	wait->Start( );
    
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( sessiontrig );
    CleanupStack::PopAndDestroy( startuptrig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
   
    else
    {
    	
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( sessiontrig );
    CleanupStack::PopAndDestroy( startuptrig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return -99; 	
    }
    
   }  
   
   //28)SetTriggersState asynchronous   with FireOnupdate = ELbtTrue but Triggering machanism state is OFF
    TInt CUpdateTrigger::TestFireOnUpdate10L( CStifItemParser&  aItem  )
    {
     RLbtServer lbtserver;
 	 RLbt lbt;
 	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
 	 
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
 	  //Construct a startup trigger
    CLbtStartupTrigger* startuptrig = CLbtStartupTrigger::NewL();
    //Construct a session trigger
    CLbtSessionTrigger* sessiontrig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( startuptrig );
    CleanupStack::PushL( sessiontrig );
    
    // Set Name
    startuptrig->SetNameL(_L("Trigger1"));
    sessiontrig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    startuptrig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate1(62.5285,23.9385);
    TCoordinate coordinate2(62.5285,23.9385);
    
    CLbtGeoCircle* circle1=CLbtGeoCircle::NewL(coordinate1,1000);
    CLbtGeoCircle* circle2=CLbtGeoCircle::NewL(coordinate2,1000);
    CleanupStack::PushL( circle1 );
    CleanupStack::PushL( circle2 );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition1=CLbtTriggerConditionArea::NewL(
                                                circle1,
                                                CLbtTriggerConditionArea::EFireOnEnter);
                                                
    CLbtTriggerConditionArea* condition2=CLbtTriggerConditionArea::NewL(
                                                circle2,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle2 );
    CleanupStack::Pop( circle1 );
    
    startuptrig->SetCondition(condition1); // ownership transferred to object
    sessiontrig->SetCondition(condition2); 
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	startuptrig->SetRequestorL(ReqType,ReqFormat,ReqData);  
	sessiontrig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    startuptrig->SetManagerUi(aManagerUi);   
    sessiontrig->SetManagerUi(aManagerUi);   
    startuptrig->SetState(CLbtTriggerEntry::EStateDisabled);    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate1 );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*startuptrig,trigId,EFalse,wait );
    wait->Start( );
    notifier->CreateTriggers( lbt,*sessiontrig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
	  	   
	notifier->UpdateTriggersState(lbt,CLbtTriggerEntry::EStateEnabled,wait,ELbtTrue);
	wait->Start( );   
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    if(TrigEntry->State()==CLbtTriggerEntry::EStateEnabled )
    {
    
    notifier->StartNotification( wait );
    notifier->After(5000000);
  	wait->Start( );
    
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( sessiontrig );
    CleanupStack::PopAndDestroy( startuptrig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone; 	
    }
   
    else
    {
    	
    CleanupStack::PopAndDestroy( 1 );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( sessiontrig );
    CleanupStack::PopAndDestroy( startuptrig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    return -99; 	
    }
    
   }  
   
	/*   
	29)Check FireOnUpdate for Entry type trigger
	30)Check FireOnUpdate for Exit type trigger*/
    TInt CUpdateTrigger::TestFireOnUpdate11L( CStifItemParser&  aItem  )
     {
  	 RLbtServer lbtserver;
  	 RLbt lbt;
  	 TInt value ;
  	 aItem.GetNextInt(value);
  	 
  	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
	 
  	 iLog->Log(_L("Before Connect "));
  	 
  	 User::LeaveIfError( lbtserver.Connect() );
  	 iLog->Log(_L("After Connect "));
      CleanupClosePushL( lbtserver );
      
  	 User::LeaveIfError( lbt.Open( lbtserver ) );
  	 CleanupClosePushL( lbt );
  	 iLog->Log(_L("After RLbt::Open "));
  	
  	 TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
  //	  #if 0
 	  //Construct a startup trigger
     CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
     
     //Push to cleanup stack
     CleanupStack::PushL( trig );
     
     // Set Name
     trig->SetNameL(_L("Trigger1"));
     _LIT( KMyTriggerHandlingProcessName, "About.exe" );
     
     TSecureId secureid;
     trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    // set commandline
    trig->SetCommandLineL(_L("commandline1"));
     
        
     // set condition
     
     TCoordinate coordinate(62.5285,23.9385);
     
     CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
     CleanupStack::PushL( circle );
     
     TUid aManagerUi = TUid::Uid(0x87654321);   
     CLbtTriggerConditionArea* condition = NULL;  
     // ownership of circle object transferred to the condition object
     if(value == 1)
     {
      condition=CLbtTriggerConditionArea::NewL(
                                                 circle,
                                                 CLbtTriggerConditionArea::EFireOnEnter);	
     }
     else if(value == 2)
     {
      condition=CLbtTriggerConditionArea::NewL(
                                             circle,
                                             CLbtTriggerConditionArea::EFireOnExit);	
     }
     
         
     CleanupStack::Pop( circle );
     
     trig->SetCondition(condition); // ownership transferred to object

     //Set Requestor
  	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
 	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
 	TBuf<KLbtMaxNameLength> ReqData=_L("");
 	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
     trig->SetManagerUi(aManagerUi);   
     
     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
     CleanupStack::PushL( notifier );
     
     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
      TLbtTriggerId trigId,trigId2;   
     
     notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
     wait->Start( );
     User::After(5000000);
     
    //**************New Trigger Entry**************/ 
     CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
     newtrig->SetNameL(_L("TriggerTest"));
    
     newtrig->SetState(CLbtTriggerEntry::EStateEnabled);
     
     newtrig->SetCommandLineL(_L("Commandline2" ));
    
     newtrig->SetId(trigId);
    
     /***************************End*******************/
     iLog->Log(_L("Before UpdateTriggerL "));
     if(value == 1 || value ==2)
    {	 
     lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
     |CLbtTriggerEntry::EAttributeState
     |CLbtTriggerEntry::EAttributeStartUpCommandLine,ELbtTrue
     );
    }
   
    // lbt.UpdateTriggerL(*newtrig);
     iLog->Log(_L("After UpdateTriggerL "));
     
     notifier->StartNotification( wait );
  	 wait->Start( );
    
     iLog->Log(_L("Before GetTriggerLC "));
     CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
     Triginfo = lbt.GetTriggerLC(trigId);
     iLog->Log(_L("After GetTriggerLC "));
     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
     
     TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
     //Check the name of the trigger
     TDesC Name2 =TrigEntry->Name(); 
     if(TrigEntry->Name()!=newtrig->Name()) 
     {
     	return -99;
     }
     //Check the state of the trigger
     CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
     if(State2 !=newtrig->State())
     {
     	return -99;
     }
     //Check type of the trigger
     TInt Type2 = TrigEntry ->Type();
     if(Type2 != newtrig->Type())
     {
     	return -99;
     }
   
 	if((static_cast <CLbtStartupTrigger*>(TrigEntry))->CommandLine()!=newtrig->CommandLine()) 
     {
     	return -99;
     }
 	

     //Check trigger Id
     trigId2 = TrigEntry->Id();
     if(trigId !=trigId2)
     {
     	return -99;
     }
     
     CleanupStack::PopAndDestroy( 1 );//Triginfo
     CleanupStack::PopAndDestroy( notifier );
     CleanupStack::PopAndDestroy( trig );
    // #endif
     CleanupStack::Pop( &lbt );
     lbt.Close();
     
     CleanupStack::PopAndDestroy( &lbtserver );
    // delete wait;
    
     iLog->Log(_L("Test passed "));
     return KErrNone; 
       
     }    
     
   /*  31)Update trigger with FireOnupdate = ELbtTrue for startup trigger(cell based)
	32)Update trigger with FireOnupdate = ELbtFalse for startup trigger(cell based)*/
     TInt CUpdateTrigger::TestFireOnUpdate12L( CStifItemParser&  aItem  )
     {
  	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 
 	 TInt value ;
  	 aItem.GetNextInt(value);
  	 
  	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
	 
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
     
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 
 	 TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
 	 iLog->Log(_L("After RLbt::Open "));
 	TCoordinate coordinate(62.5285,23.9385);
 //	  #if 0
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
     
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );   
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
    // set condition
    
    RFileLogger aLog;
    CLbtAppCgiRequestor* CGIRequest=CLbtAppCgiRequestor::NewL(aLog);
    CleanupStack::PushL( CGIRequest );  
    CGIRequest->Start(wait);
    wait->Start( );
 		CTelephony::TNetworkInfoV1Pckg currcgi=CGIRequest->CurrentCGI();
     
 
 		CLbtGeoCell* Cellarea2= NULL;
    CTelephony::TNetworkMode Networkmode = currcgi().iMode;
     		   											
 		if(Networkmode ==CTelephony::ENetworkModeGsm)
 		{
		 Cellarea2= CLbtGeoCell::NewL(           RMobilePhone :: ENetworkModeGsm,
	 											 currcgi().iCountryCode,
												 currcgi().iNetworkId,
												 currcgi().iLocationAreaCode,
												 currcgi().iCellId
													);	
		}
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of Cellarea object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                Cellarea2,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
       
    trig->SetCondition(condition); // ownership transferred to object

    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig->SetManagerUi(aManagerUi);   
        
       
     TLbtTriggerId trigId,trigId2;   
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
    User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateEnabled);
    
//	trigId = 1;
    newtrig->SetId(trigId);
   
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    if(value ==1)
    {
    lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    ,ELbtTrue);	
    }
    
    else if(value ==2)
    {
    lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    ,ELbtFalse);	
    }
    
   // lbt.UpdateTriggerL(*newtrig);
    iLog->Log(_L("After UpdateTriggerL "));
    
    if(value == 1)
    {
    	notifier->StartNotification( wait );
  		wait->Start( );
    }
    
    iLog->Log(_L("Before GetTriggerLC "));
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    
    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
    //Check the name of the trigger
    TDesC Name2 =TrigEntry->Name(); 
    if(TrigEntry->Name()!=newtrig->Name()) 
    {
    	return -99;
    }
    //Check the state of the trigger
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
    if(State2 !=newtrig->State())
    {
    	return -99;
    }
    //Check type of the trigger
    TInt Type2 = TrigEntry ->Type();
    if(Type2 != newtrig->Type())
    {
    	return -99;
    }
    
    //}
    //Check trigger Id
    trigId2 = TrigEntry->Id();
    if(trigId !=trigId2)
    {
    	return -99;
    }
    
    CleanupStack::PopAndDestroy( 1 );//Triginfo
    CleanupStack::PopAndDestroy( CGIRequest );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
   // #endif
    CleanupStack::Pop( &lbt );
    lbt.Close();
    
    CleanupStack::PopAndDestroy( &lbtserver );
   // //delete wait;
   
    iLog->Log(_L("Test passed "));
    return KErrNone; 
       
     }    
     
 /*    33)Update trigger with FireOnupdate = ELbtTrue for session trigger( cell based)
34)Update trigger with FireOnupdate = ELbtFalse for session trigger( cell based)*/
     TInt CUpdateTrigger::TestFireOnUpdate13L( CStifItemParser&  aItem  )
     {
  	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 
 	 TInt value ;
  	 aItem.GetNextInt(value);
  	 
  	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
	 
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
     
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	 
 	 TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
 	 TCoordinate coordinate(62.5285,23.9385);
 //	  #if 0
	  //Construct a startup trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
   
    // set condition
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
    
    RFileLogger aLog;
    CLbtAppCgiRequestor* CGIRequest=CLbtAppCgiRequestor::NewL(aLog);
    CleanupStack::PushL( CGIRequest );  
    CGIRequest->Start(wait);
    wait->Start( );
 		CTelephony::TNetworkInfoV1Pckg currcgi=CGIRequest->CurrentCGI();
     
 
 		CLbtGeoCell* Cellarea2 = NULL;
    CTelephony::TNetworkMode Networkmode = currcgi().iMode;
     		   											
 		if(Networkmode ==CTelephony::ENetworkModeGsm)
 		{
		 Cellarea2= CLbtGeoCell::NewL(           RMobilePhone :: ENetworkModeGsm,
	 											 currcgi().iCountryCode,
												 currcgi().iNetworkId,
												 currcgi().iLocationAreaCode,
												 currcgi().iCellId
													);	
		}
    
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of Cellarea object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                Cellarea2,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
       
    trig->SetCondition(condition); // ownership transferred to object

    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig->SetManagerUi(aManagerUi);   
        
    
     TLbtTriggerId trigId,trigId2;   
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
    User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtSessionTrigger* newtrig = CLbtSessionTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateEnabled);
    
//	trigId = 1;
    newtrig->SetId(trigId);
   
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    if(value ==1)
    {
    lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    ,ELbtTrue);	
    }
    
    else if(value ==2)
    {
    lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    ,ELbtFalse);	
    }
    
   // lbt.UpdateTriggerL(*newtrig);
    iLog->Log(_L("After UpdateTriggerL "));
    
    if(value == 1)
    {
    	notifier->StartNotification( wait );
  		wait->Start( );
    }
    
    iLog->Log(_L("Before GetTriggerLC "));
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    
    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
    //Check the name of the trigger
    TDesC Name2 =TrigEntry->Name(); 
    if(TrigEntry->Name()!=newtrig->Name()) 
    {
    	return -99;
    }
    //Check the state of the trigger
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
    if(State2 !=newtrig->State())
    {
    	return -99;
    }
    //Check type of the trigger
    TInt Type2 = TrigEntry ->Type();
    if(Type2 != newtrig->Type())
    {
    	return -99;
    }
    
    //}
    //Check trigger Id
    trigId2 = TrigEntry->Id();
    if(trigId !=trigId2)
    {
    	return -99;
    }
    
    CleanupStack::PopAndDestroy( 1 );//Triginfo
	CleanupStack::PopAndDestroy( CGIRequest );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
   // #endif
    CleanupStack::Pop( &lbt );
    lbt.Close();
    
    CleanupStack::PopAndDestroy( &lbtserver );
   // //delete wait;
   
    iLog->Log(_L("Test passed "));
    return KErrNone; 
       
     }    
     
     /*37)SetTriggerState  with FireOnupdate = ELbtTrue --for session trigger(cell based)
     38)SetTriggerState  with FireOnupdate = ELbtFalse --for session trigger(cell based)*/
     TInt CUpdateTrigger::TestFireOnUpdate14L( CStifItemParser&  aItem  )
     {
	 RLbtServer lbtserver;
	 RLbt lbt;
    
     TInt value ;
  	 aItem.GetNextInt(value);
  	 
  	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
	 
    iLog->Log(_L("Before Connect"));
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    iLog->Log(_L("Before Open"));
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
 	TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
     	  //Construct a session trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    TCoordinate coordinate(62.5285,23.9385);
    // set condition
    
     
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
    
    RFileLogger aLog;
    CLbtAppCgiRequestor* CGIRequest=CLbtAppCgiRequestor::NewL(aLog);
    CleanupStack::PushL( CGIRequest );  
    CGIRequest->Start(wait);
    wait->Start( );
 		CTelephony::TNetworkInfoV1Pckg currcgi=CGIRequest->CurrentCGI();
     
 
 		CLbtGeoCell* Cellarea2 = NULL;
    CTelephony::TNetworkMode Networkmode = currcgi().iMode;
     		   											
 		if(Networkmode ==CTelephony::ENetworkModeGsm)
 		{
		 Cellarea2= CLbtGeoCell::NewL(           RMobilePhone :: ENetworkModeGsm,
	 											 currcgi().iCountryCode,
												 currcgi().iNetworkId,
												 currcgi().iLocationAreaCode,
												 currcgi().iCellId
													);	
		}
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of Cellarea object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                Cellarea2,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    
    
 //   trig->SetState(CLbtTriggerEntry::EStateDisabled);
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId;
     trig->SetManagerUi(aManagerUi);   
     //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);   
   
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );    
    if(value ==1)
    {
    	lbt.SetTriggerStateL(trigId,CLbtTriggerEntry::EStateEnabled,ELbtTrue);    
    }
    
    if(value ==2)
    {
    	lbt.SetTriggerStateL(trigId,CLbtTriggerEntry::EStateEnabled,ELbtFalse);    
    }
    
    if(value == 1)
    {
    	notifier->StartNotification( wait );
  		wait->Start( );
    }
      
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    iLog->Log(_L("Before GetTriggersL"));
    lbt.GetTriggersL(trigInfoList);
    iLog->Log(_L("After GetTriggersL"));
    
    //Do something with the trigger list
   
    TInt count = trigInfoList.Count();
    for ( TInt i = 0; i < count; i++ )
    {
    	CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
    	if(CLbtTriggerEntry::EStateEnabled!=(TrigEntry->State()) )
    	{
    		return -99;
    	}
    }
    
    //free memory
    for ( TInt i = 0; i < count; i++ )
        {
        delete trigInfoList[i];
        }
    trigInfoList.Close();
	CleanupStack::PopAndDestroy( CGIRequest );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
	CleanupStack::PopAndDestroy(&lbt);
    CleanupStack::PopAndDestroy(&lbtserver);
    return KErrNone;  
     }    
     
  /*  35)SetTriggerState  with FireOnupdate = ELbtTrue --for startup trigger( cell based)
    36)SetTriggerState  with FireOnupdate = ELbtFalse --for startup trigger(cell based) */
    TInt CUpdateTrigger::TestFireOnUpdate15L( CStifItemParser&  aItem  )
     {
	 RLbtServer lbtserver;
	 RLbt lbt;
    
     TInt value ;
  	 aItem.GetNextInt(value);
  	 
  	 EnableSimPSYL();
 	 _LIT( KSimulationFile,"c:\\system\\data\\simu_move2.sps" );
 	 CRepository* repository = CRepository::NewLC(KCRUidSimulationPSY);
 	 iLog->Log(_L("Simulation PSY Repository object created"));
	 User::LeaveIfError(repository->Set(KCRKeySimPSYSimulationFile, KSimulationFile));
	 iLog->Log(_L("Simulation input file set "));
	 CleanupStack::PopAndDestroy(repository); 
	 
    iLog->Log(_L("Before Connect"));
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    iLog->Log(_L("Before Open"));
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
 	TCoordinate coordinate(62.5285,23.9385);        
    TRAP_IGNORE(lbt.DeleteTriggersL()) ;       
     	  //Construct a session trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    // set condition
    
     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
    
    RFileLogger aLog;
    CLbtAppCgiRequestor* CGIRequest=CLbtAppCgiRequestor::NewL(aLog);
    CleanupStack::PushL( CGIRequest );  
    CGIRequest->Start(wait);
    wait->Start( );
 		CTelephony::TNetworkInfoV1Pckg currcgi=CGIRequest->CurrentCGI();
     
 
 		CLbtGeoCell* Cellarea2 = NULL;
    CTelephony::TNetworkMode Networkmode = currcgi().iMode;
     		   											
 		if(Networkmode ==CTelephony::ENetworkModeGsm)
 		{
		 Cellarea2= CLbtGeoCell::NewL(           RMobilePhone :: ENetworkModeGsm,
	 											 currcgi().iCountryCode,
												 currcgi().iNetworkId,
												 currcgi().iLocationAreaCode,
												 currcgi().iCellId
													);	
		}
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of Cellarea object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                Cellarea2,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    
    
 //   trig->SetState(CLbtTriggerEntry::EStateDisabled);
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId;
     trig->SetManagerUi(aManagerUi);   
     //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);   
    
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );    
    if(value ==1)
    {
    	lbt.SetTriggerStateL(trigId,CLbtTriggerEntry::EStateEnabled,ELbtTrue);    
    }
    
    if(value ==2)
    {
    	lbt.SetTriggerStateL(trigId,CLbtTriggerEntry::EStateEnabled,ELbtFalse);    
    }
    
    if(value == 1)
    {
    	notifier->StartNotification( wait );
  		wait->Start( );
    }
      
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    iLog->Log(_L("Before GetTriggersL"));
    lbt.GetTriggersL(trigInfoList);
    iLog->Log(_L("After GetTriggersL"));
    
    //Do something with the trigger list
   
    TInt count = trigInfoList.Count();
    for ( TInt i = 0; i < count; i++ )
    {
    	CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
    	if(CLbtTriggerEntry::EStateEnabled!=(TrigEntry->State()) )
    	{
    		return -99;
    	}
    }
    
    //free memory
    for ( TInt i = 0; i < count; i++ )
        {
        delete trigInfoList[i];
        }
    trigInfoList.Close();
	CleanupStack::PopAndDestroy( CGIRequest );
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
	CleanupStack::PopAndDestroy(&lbt);
    CleanupStack::PopAndDestroy(&lbtserver);
    return KErrNone;  
     }  
     
     
     
    TInt CUpdateTrigger::TestAsyncUpdate1L( CStifItemParser& /* aItem */ )
    {

 	
 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
     
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 //	  #if 0
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
   // set commandline
   trig->SetCommandLineL(_L("commandline1"));
    
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object

    //Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    trig->SetManagerUi(aManagerUi);   
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
     TLbtTriggerId trigId,trigId2;   
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
    User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    newtrig->SetCommandLineL(_L("Commandline2" ));
    TCoordinate newcoordinate(10,10);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,500);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnExit);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
//	trigId = 1;
    newtrig->SetId(trigId);
   
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    notifier->UpdateTrigger(lbt,*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition
    |CLbtTriggerEntry::EAttributeStartUpCommandLine,wait,ELbtTrue
    );
    wait->Start( );
   // lbt.UpdateTriggerL(*newtrig);
    iLog->Log(_L("After UpdateTriggerL "));
    
    iLog->Log(_L("Before GetTriggerLC "));
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    
    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
    //Check the name of the trigger
    TDesC Name2 =TrigEntry->Name(); 
    if(TrigEntry->Name()!=newtrig->Name()) 
    {
    	return -99;
    }
    //Check the state of the trigger
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
    if(State2 !=newtrig->State())
    {
    	return -99;
    }
    //Check type of the trigger
    TInt Type2 = TrigEntry ->Type();
    if(Type2 != newtrig->Type())
    {
    	return -99;
    }
    //Check Condition of the trigger
	CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
	CLbtTriggerConditionArea::TDirection direction;
	direction = Condition2->Direction();
	if(direction!=CLbtTriggerConditionArea::EFireOnExit)
	{
		return -99;
	}
	CLbtGeoAreaBase* area = Condition2->TriggerArea();
	if(area ->Type()!=CLbtGeoAreaBase::ECircle )
	{
		return -99;
	}
	
	CLbtGeoCircle* circle2 = static_cast <CLbtGeoCircle*>(area);
	TCoordinate center = newcircle->Center();
	TCoordinate center2 = circle2->Center();
	TReal32 distance;
	center2.Distance(center,distance);
	if(distance!=0)
	{
		return -99;
	}
	TReal radius = circle2->Radius();
	if(radius != newcircle->Radius())
	{
		return -99;
	}
	if((static_cast <CLbtStartupTrigger*>(TrigEntry))->CommandLine()!=newtrig->CommandLine()) 
    {
    	return -99;
    }
	

    //Check trigger Id
    trigId2 = TrigEntry->Id();
    if(trigId !=trigId2)
    {
    	return -99;
    }
    
    CleanupStack::PopAndDestroy( 1 );//Triginfo
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
   // #endif
    CleanupStack::Pop( &lbt );
    lbt.Close();
    
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
   
    iLog->Log(_L("Test passed "));
    return KErrNone; 
      
    }
    
    
      //Updating attributes of a session trigger - TC_LBT012_02
     TInt CUpdateTrigger::TestAsyncUpdate2L( CStifItemParser& /* aItem */ )
    {
 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
      
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnExit);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId,trigId2;
    trig->SetManagerUi(aManagerUi);   
        
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtSessionTrigger* newtrig = CLbtSessionTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,500);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object

    newtrig->SetId(trigId);
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    notifier->UpdateTrigger(lbt,*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition,wait,ELbtTrue);
    wait->Start( );
    iLog->Log(_L("After UpdateTriggerL "));
    
    iLog->Log(_L("Before GetTriggerLC "));
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    
    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
    //Check the name of the trigger
    TDesC Name2 =TrigEntry->Name(); 
    if(TrigEntry->Name()!=newtrig->Name()) 
    {
    	return -99;
    }
    //Check the state of the trigger
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
    if(State2 !=newtrig->State())
    {
    	return -99;
    }
    //Check type of the trigger
    TInt Type2 = TrigEntry ->Type();
    if(Type2 != newtrig->Type())
    {
    	return -99;
    }
    //Check Condition of the trigger
	CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
	CLbtTriggerConditionArea::TDirection direction;
	direction = Condition2->Direction();
	if(direction!=CLbtTriggerConditionArea::EFireOnEnter)
	{
		return -99;
	}
	CLbtGeoAreaBase* area = Condition2->TriggerArea();
	if(area ->Type()!=CLbtGeoAreaBase::ECircle )
	{
		return -99;
	}
	
	CLbtGeoCircle* circle2 = static_cast <CLbtGeoCircle*>(area);
	TCoordinate center = newcircle->Center();
	TCoordinate center2 = circle2->Center();
	TReal32 distance;
	center2.Distance(center,distance);
	if(distance!=0)
	{
		return -99;
	}
	TReal radius = circle2->Radius();
	if(radius != newcircle->Radius())
	{
		return -99;
	}

    //Check trigger Id
    trigId2 = TrigEntry->Id();
    if(trigId !=trigId2)
    {
    	return -99;
    }
    
     CleanupStack::PopAndDestroy( 1 );//Triginfo
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 
      
    }
    
    //Updating Nonmodifiable attributes of a startup trigger - TC_LBT012_03
    TInt CUpdateTrigger::TestAsyncUpdate3L( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
        
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,500);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
    
    newtrig->SetManagerUi(TUid::Uid(0x12345678));

    newtrig->SetId(trigId);
    
    newtrig->SetRequestorL(CRequestor::ERequestorContact,CRequestor::EFormatTelephone,_L("Test2") );
    _LIT( KNewTriggerHandlingProcessName, "ConsoleUI.exe" );
    
    TSecureId newsecureid;
    newtrig->SetProcessId(KNewTriggerHandlingProcessName,newsecureid);
       
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    notifier->UpdateTrigger(lbt,*newtrig,CLbtTriggerEntry::EAttributeRequestor
    |CLbtTriggerEntry::EAttributeManagerUi
    |CLbtTriggerEntry::EAttributeStartUpProcessId,wait,ELbtTrue
    );
    wait->Start( );
    if(notifier->iStatus.Int()==KErrAccessDenied)
    {
    iLog->Log(_L("After UpdateTriggerL "));
      
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
      CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    CleanupStack::PopAndDestroy(1);
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
          
    }
    
    
      //Trying to update Nonmodifiable attributes of session trigger - TC_LBT012_04
     TInt CUpdateTrigger::TestAsyncUpdate4L( CStifItemParser& /* aItem */ )
    {
 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
    //Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);      
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtSessionTrigger* newtrig = CLbtSessionTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,500);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
    
    newtrig->SetManagerUi(TUid::Uid(0x12345678));

    newtrig->SetId(trigId);
    
    newtrig->SetRequestorL(CRequestor::ERequestorContact,CRequestor::EFormatTelephone,_L("Test2") );
      
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    notifier->UpdateTrigger(lbt,*newtrig,CLbtTriggerEntry::EAttributeRequestor
    |CLbtTriggerEntry::EAttributeManagerUi
    |CLbtTriggerEntry::EAttributeStartUpProcessId,wait,ELbtTrue
    );
    wait->Start();
    if(notifier->iStatus.Int()==KErrAccessDenied)
    {
    iLog->Log(_L("After UpdateTriggerL "));
      
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
      
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
      
      
    }
    
    
     //Trying to update trigger with zero length name - TC_LBT012_05
      TInt CUpdateTrigger::TestAsyncUpdate5L( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
        
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L(""));
    
    newtrig->SetId(trigId);
    
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    notifier->UpdateTrigger(lbt,*newtrig,CLbtTriggerEntry::EAttributeName,wait,ELbtTrue);
    wait->Start();
    if(notifier->iStatus.Int() == KErrArgument)
    {
    iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
    
      
    }
    
    
     //Trying to update trigger without defining the trigger area- TC_LBT012_06
      TInt CUpdateTrigger::TestAsyncUpdate6L( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
    //Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);      
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    
       
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL();
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
    
    newtrig->SetId(trigId);
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
   
    notifier->UpdateTrigger(lbt,*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition,wait,ELbtTrue);
    wait->Start();
    if(notifier->iStatus.Int() == KErrArgument)
    {
    iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
      
    }
    
    
     //Trying to update trigger with trigger area less than minimum size of trigger area - TC_LBT012_07
      TInt CUpdateTrigger::TestAsyncUpdate7L( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	
 	 
	  //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
    _LIT( KMyTriggerHandlingProcessName, "About.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    TCoordinate coordinate(62.5285,23.9385);
    
    CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
    CleanupStack::PushL( circle );
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                circle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( circle );
    
    trig->SetCondition(condition); // ownership transferred to object
	//Set Requestor
 	CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
	CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
	TBuf<KLbtMaxNameLength> ReqData=_L("");
	trig->SetRequestorL(ReqType,ReqFormat,ReqData);  
    TLbtTriggerId trigId;
    trig->SetManagerUi(aManagerUi);   
        
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
 //   User::After(5000000);
    
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,0);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
    newtrig->SetId(trigId);
      
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    notifier->UpdateTrigger(lbt,*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition,wait,ELbtTrue);
    wait->Start();
    if(notifier->iStatus.Int() == KErrTriggerAreaTooSmall)
    {
    iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
      
    }
    
    
      //Trying to update trigger without opening the subsession - TC_LBT012_08
      TInt CUpdateTrigger::TestAsyncUpdate8L( CStifItemParser& /* aItem */ )
    {
 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect());
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 /*	 TCoordinate coordinate(62.5285,23.9385);
 	  CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier ); */
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;   
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,1);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
    
    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 2); 
      
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    TRequestStatus reqtatus;
    lbt.UpdateTrigger(*newtrig,
    CLbtTriggerEntry::EAttributeCondition,ELbtTrue,reqtatus);
    iLog->Log(_L("After UpdateTriggerL "));
   // CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 
      
    }
    
    
      //Trying to update trigger when it is not available - TC_LBT012_09
      TInt CUpdateTrigger::TestAsyncUpdate9L( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
 	 	 TCoordinate coordinate(62.5285,23.9385);
 	  CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier ); 
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;   
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,1);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
     newtrig->SetId(99999999);
      
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    notifier->UpdateTrigger(lbt,*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition,wait,ELbtTrue);
    wait->Start();
    if(notifier->iStatus.Int() == KErrNotFound)
    {
    iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
    
      
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
      
    }
    
    
        //Trying to update trigger owned by another process - TC_LBT012_10
      TInt CUpdateTrigger::TestAsyncUpdate10L( CStifItemParser& /* aItem */ )
    {

 	 RLbtServer lbtserver;
 	 RLbt lbt;
 	 iLog->Log(_L("Before Connect "));
 	 User::LeaveIfError( lbtserver.Connect() );
 	 iLog->Log(_L("After Connect "));
     CleanupClosePushL( lbtserver );
 	 User::LeaveIfError( lbt.Open( lbtserver ) );
 	 CleanupClosePushL( lbt );
 	 iLog->Log(_L("After RLbt::Open "));
     /***************Another process Creating a trigger************/
     	 iLog->Log(_L("Before Create Trigger"));
     _LIT( KFilename,"CreateTest.exe" );
     RProcess proc;
     TInt retVal =proc.Create(KFilename,KNullDesC);
     TInt triggerId = KLbtNullTriggerId;
     if(retVal == KErrNone)
         {
         proc.Resume();
         TRequestStatus status = KRequestPending;
         proc.Rendezvous(status);
         User::WaitForRequest(status);
         triggerId = status.Int();
         }   
      
     /***************************End*******************************/
 	 	 TCoordinate coordinate(62.5285,23.9385);
 	  CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt,coordinate );
    CleanupStack::PushL( notifier ); 
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;       
   //**************New Trigger Entry**************/ 
    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
    newtrig->SetNameL(_L("TriggerTest"));
    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
    TCoordinate newcoordinate(0,0);
    
    CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,1);
    CleanupStack::PushL( newcircle );
         
    // ownership of circle object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                newcircle,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    CleanupStack::Pop( newcircle );
    
    newtrig->SetCondition(newcondition); // ownership transferred to object
     newtrig->SetId(triggerId);
      
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    notifier->UpdateTrigger(lbt,*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition,wait,ELbtTrue);
    wait->Start();
    if(notifier->iStatus.Int() == KErrNotFound)
    {
    iLog->Log(_L("After UpdateTriggerL "));
    
   
    
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 	
    }
    else
    {
    	iLog->Log(_L("After UpdateTriggerL "));
    
    CleanupStack::PopAndDestroy( notifier );   
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // delete wait;
    iLog->Log(_L("Test passed "));
    return -99; 
    }
      
    }