locationtriggering/tsrc/lbtengine_test/TestHybridTriggers/src/TestHybridTriggersBlocks.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) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
* 
* Description:    This file contains testclass implementation.
*
*/




// [INCLUDE FILES] - do not remove
#include <e32svr.h>
#include <StifParser.h>
#include <Stiftestinterface.h>
#include "TestHybridTriggers.h"



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

// -----------------------------------------------------------------------------
// CTestHybridTriggers::Delete
// Delete here all resources allocated and opened from test methods. 
// Called from destructor. 
// -----------------------------------------------------------------------------
//
void CTestHybridTriggers::Delete() 
    {

    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::RunMethodL
// Run specified method. Contains also table of test mothods and their names.
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::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( "TC_TestNewL1L", CTestHybridTriggers::TC_TestNewL1L ),
        ENTRY( "TC_TestNewL2L", CTestHybridTriggers::TC_TestNewL2L ),
        ENTRY( "TC_TestNewL3L", CTestHybridTriggers::TC_TestNewL3L ),
        ENTRY( "TC_TestNewL4L", CTestHybridTriggers::TC_TestNewL4L ),
        ENTRY( "TC_TestNewL5L", CTestHybridTriggers::TC_TestNewL5L ),
        ENTRY( "TC_TestNewLC1L", CTestHybridTriggers::TC_TestNewLC1L ),
        ENTRY( "TC_TestNewLC2L", CTestHybridTriggers::TC_TestNewLC2L ),
        ENTRY( "TC_TestNewLC3L", CTestHybridTriggers::TC_TestNewLC3L ),
        ENTRY( "TC_TestNewLC4L", CTestHybridTriggers::TC_TestNewLC4L ),
        ENTRY( "TC_TestNewLC5L", CTestHybridTriggers::TC_TestNewLC5L ),
        ENTRY( "TC_TestSetHybridArea1L", CTestHybridTriggers::TC_TestSetHybridArea1L ),
        ENTRY( "TC_TestSetHybridArea2L", CTestHybridTriggers::TC_TestSetHybridArea2L ),
        ENTRY( "TC_TestSetHybridArea3L", CTestHybridTriggers::TC_TestSetHybridArea3L ),
        ENTRY( "TC_TestInternalizeAndExternalizeL", CTestHybridTriggers::TC_TestInternalizeAndExternalizeL ),
        ENTRY( "TC_TestCLbtTriggerConditionArea1L", CTestHybridTriggers::TC_TestCLbtTriggerConditionArea1L ),
        ENTRY( "TC_TestCLbtTriggerConditionArea2L", CTestHybridTriggers::TC_TestCLbtTriggerConditionArea2L ),
        ENTRY( "TC_TestCLbtTriggerConditionArea3L", CTestHybridTriggers::TC_TestCLbtTriggerConditionArea3L ),
        ENTRY( "TC_TestCLbtTriggerConditionArea4L", CTestHybridTriggers::TC_TestCLbtTriggerConditionArea4L ),
        ENTRY( "TC_TestCLbtTriggerFilterByArea1L", CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea1L ),
        ENTRY( "TC_TestCLbtTriggerFilterByArea2L", CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea2L ),
        ENTRY( "TC_TestCLbtTriggerFilterByArea3L", CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea3L ),
        ENTRY( "TC_TestCLbtTriggerFilterByArea4L", CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea4L ),
        ENTRY( "TC_TestCreatetrigger1L", CTestHybridTriggers::TC_TestCreatetrigger1L ),
        ENTRY( "TC_TestCreatetrigger2L", CTestHybridTriggers::TC_TestCreatetrigger2L ),
        ENTRY( "TC_TestCreatetrigger3L", CTestHybridTriggers::TC_TestCreatetrigger3L ),
        ENTRY( "TC_TestCreatetrigger4L", CTestHybridTriggers::TC_TestCreatetrigger4L ),
        ENTRY( "TC_TestDeleteTrigger1L", CTestHybridTriggers::TC_TestDeleteTrigger1L ),
        ENTRY( "TC_TestDeleteTrigger2L", CTestHybridTriggers::TC_TestDeleteTrigger2L ),
        ENTRY( "TC_TestDeleteTriggers1L", CTestHybridTriggers::TC_TestDeleteTriggers1L ),
        ENTRY( "TC_TestDeleteTriggers2L", CTestHybridTriggers::TC_TestDeleteTriggers2L ),
        ENTRY( "TC_TestDeleteTriggers3L", CTestHybridTriggers::TC_TestDeleteTriggers3L ),
        ENTRY( "TC_TestDeleteTriggers4L", CTestHybridTriggers::TC_TestDeleteTriggers4L ),
        ENTRY( "TC_TestDeleteTriggers5L", CTestHybridTriggers::TC_TestDeleteTriggers5L ),
        ENTRY( "TC_TestDeleteTriggers6L", CTestHybridTriggers::TC_TestDeleteTriggers6L ),
        ENTRY( "TC_TestDeleteTriggers7L", CTestHybridTriggers::TC_TestDeleteTriggers7L ),
        ENTRY( "TC_TestDeleteTriggers8L", CTestHybridTriggers::TC_TestDeleteTriggers8L ),
        ENTRY( "TC_TestDeleteTriggers9L", CTestHybridTriggers::TC_TestDeleteTriggers9L ),
        ENTRY( "TC_TestDeleteTriggers10L", CTestHybridTriggers::TC_TestDeleteTriggers10L ),
        ENTRY( "TC_TestDeleteTriggers11L", CTestHybridTriggers::TC_TestDeleteTriggers11L ),
        ENTRY( "TC_TestDeleteTriggers12L", CTestHybridTriggers::TC_TestDeleteTriggers12L ),
        ENTRY( "TC_TestGetTriggers1L", CTestHybridTriggers::TC_TestGetTriggers1L ),
        ENTRY( "TC_TestGetTriggers2L", CTestHybridTriggers::TC_TestGetTriggers2L ),
        ENTRY( "TC_TestGetTriggers3L", CTestHybridTriggers::TC_TestGetTriggers3L ),
        ENTRY( "TC_TestGetTriggers4L", CTestHybridTriggers::TC_TestGetTriggers4L ),
        ENTRY( "TC_TestGetTriggers5L", CTestHybridTriggers::TC_TestGetTriggers5L ),
        ENTRY( "TC_TestGetTriggers6L", CTestHybridTriggers::TC_TestGetTriggers6L ),
        ENTRY( "TC_TestGetTriggers7L", CTestHybridTriggers::TC_TestGetTriggers7L ),
        ENTRY( "TC_TestGetTriggers8L", CTestHybridTriggers::TC_TestGetTriggers8L ),
        ENTRY( "TC_TestGetTriggers9L", CTestHybridTriggers::TC_TestGetTriggers9L ),
        ENTRY( "TC_TestGetTriggers10L", CTestHybridTriggers::TC_TestGetTriggers10L ),
        ENTRY( "TC_TestGetTriggers11L", CTestHybridTriggers::TC_TestGetTriggers11L ),
        ENTRY( "TC_TestGetTriggers12L", CTestHybridTriggers::TC_TestGetTriggers12L ),
        ENTRY( "TC_TestGetTriggers_Iterator1L", CTestHybridTriggers::TC_TestGetTriggers_Iterator1L ),
        ENTRY( "TC_TestGetTriggers_Iterator2L", CTestHybridTriggers::TC_TestGetTriggers_Iterator2L ),
        ENTRY( "TC_TestGetTriggers_Iterator3L", CTestHybridTriggers::TC_TestGetTriggers_Iterator3L ),
        ENTRY( "TC_TestGetTriggers_Iterator4L", CTestHybridTriggers::TC_TestGetTriggers_Iterator4L ),
        ENTRY( "TC_TestGetTriggers_Iterator5L", CTestHybridTriggers::TC_TestGetTriggers_Iterator5L ),
        ENTRY( "TC_TestGetTriggers_Iterator6L", CTestHybridTriggers::TC_TestGetTriggers_Iterator6L ),
        ENTRY( "TC_TestGetTriggers_Iterator7L", CTestHybridTriggers::TC_TestGetTriggers_Iterator7L ),
        ENTRY( "TC_TestGetTriggers_Iterator8L", CTestHybridTriggers::TC_TestGetTriggers_Iterator8L ),
        ENTRY( "TC_TestGetTriggers_Iterator9L", CTestHybridTriggers::TC_TestGetTriggers_Iterator9L ),
        ENTRY( "TC_TestGetTriggers_Iterator10L", CTestHybridTriggers::TC_TestGetTriggers_Iterator10L ),
        ENTRY( "TC_TestGetTriggers_Iterator11L", CTestHybridTriggers::TC_TestGetTriggers_Iterator11L ),
        ENTRY( "TC_TestGetTriggers_Iterator12L", CTestHybridTriggers::TC_TestGetTriggers_Iterator12L ),
        ENTRY( "TC_TestSetTriggersState1L", CTestHybridTriggers::TC_TestSetTriggersState1L ),
        ENTRY( "TC_TestSetTriggersState2L", CTestHybridTriggers::TC_TestSetTriggersState2L ),
        ENTRY( "TC_TestSetTriggersState3L", CTestHybridTriggers::TC_TestSetTriggersState3L ),
        ENTRY( "TC_TestSetTriggersState4L", CTestHybridTriggers::TC_TestSetTriggersState4L ),
        ENTRY( "TC_TestSetTriggersState5L", CTestHybridTriggers::TC_TestSetTriggersState5L ),
        ENTRY( "TC_TestSetTriggersState6L", CTestHybridTriggers::TC_TestSetTriggersState6L ),
        ENTRY( "TC_TestSetTriggersState7L", CTestHybridTriggers::TC_TestSetTriggersState7L ),
        ENTRY( "TC_TestSetTriggersState8L", CTestHybridTriggers::TC_TestSetTriggersState8L ),
        ENTRY( "TC_TestSetTriggersState9L", CTestHybridTriggers::TC_TestSetTriggersState9L ),
        ENTRY( "TC_TestSetTriggersState10L", CTestHybridTriggers::TC_TestSetTriggersState10L ),
        ENTRY( "TC_TestSetTriggersState11L", CTestHybridTriggers::TC_TestSetTriggersState11L ),
        ENTRY( "TC_TestSetTriggersState12L", CTestHybridTriggers::TC_TestSetTriggersState12L ),
        ENTRY( "TC_TestSetTriggerState1L", CTestHybridTriggers::TC_TestSetTriggerState1L ),
        ENTRY( "TC_TestListtriggerIds1L", CTestHybridTriggers::TC_TestListtriggerIds1L ),
        ENTRY( "TC_TestListtriggerIds2L", CTestHybridTriggers::TC_TestListtriggerIds2L ),
        ENTRY( "TC_TestListtriggerIds3L", CTestHybridTriggers::TC_TestListtriggerIds3L ),
        ENTRY( "TC_TestListtriggerIds4L", CTestHybridTriggers::TC_TestListtriggerIds4L ),
        ENTRY( "TC_TestListtriggerIds5L", CTestHybridTriggers::TC_TestListtriggerIds5L ),
        ENTRY( "TC_TestListtriggerIds6L", CTestHybridTriggers::TC_TestListtriggerIds6L ),
        ENTRY( "TC_TestListtriggerIds7L", CTestHybridTriggers::TC_TestListtriggerIds7L ),
        ENTRY( "TC_TestListtriggerIds8L", CTestHybridTriggers::TC_TestListtriggerIds8L ),
        ENTRY( "TC_TestListtriggerIds9L", CTestHybridTriggers::TC_TestListtriggerIds9L ),
        ENTRY( "TC_TestListtriggerIds10L", CTestHybridTriggers::TC_TestListtriggerIds10L ),
        ENTRY( "TC_TestListtriggerIds11L", CTestHybridTriggers::TC_TestListtriggerIds11L ),
        ENTRY( "TC_TestListtriggerIds12L", CTestHybridTriggers::TC_TestListtriggerIds12L ),
        ENTRY( "TC_TestGettriggerLC1L", CTestHybridTriggers::TC_TestGettriggerLC1L ),
        ENTRY( "TC_TestGettriggerLC2L", CTestHybridTriggers::TC_TestGettriggerLC2L ),
        ENTRY( "TC_TestUpdateTrigger1L", CTestHybridTriggers::TC_TestUpdateTrigger1L ),
        ENTRY( "TC_TestUpdateTrigger2L", CTestHybridTriggers::TC_TestUpdateTrigger2L ),
        ENTRY( "TC_TestUpdateTrigger3L", CTestHybridTriggers::TC_TestUpdateTrigger3L ),
        ENTRY( "TC_TestUpdateTrigger4L", CTestHybridTriggers::TC_TestUpdateTrigger4L ),
        ENTRY( "TC_TestUpdateTrigger5L", CTestHybridTriggers::TC_TestUpdateTrigger5L ),
        ENTRY( "TC_TestUpdateTrigger6L", CTestHybridTriggers::TC_TestUpdateTrigger6L ),
        ENTRY( "TC_TestHybridTriggerFiring1L", CTestHybridTriggers::TC_TestHybridTriggerFiring1L ),
        ENTRY( "TC_TestHybridTriggerFiring2L", CTestHybridTriggers::TC_TestHybridTriggerFiring2L ),
        ENTRY( "StartCellChangeNotifierL", CTestHybridTriggers::StartCellChangeNotifierL ),
        //ADD NEW ENTRY HERE
        // [test cases entries] - Do not remove

        };

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

    return RunInternalL( KFunctions, count, aItem );

    }

void CTestHybridTriggers::AssertTrueL( TBool aCondition,const TDesC& aMessage )
    {
           
         if(!aCondition)
         {
          
           iLog->Log( aMessage );
           User::LeaveIfError(KErrGeneral);
         }
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewL1L
// Testing CLbtGeoWlan::NewL()
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestNewL1L( CStifItemParser& aItem )
    {

    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL();
    //Push to cleanup stack
    CleanupStack::PushL( Hybridarea );
        
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
        
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode2,
                                                        Networkidentitycode2,
                                                        Locationareacode2,
                                                        CellId2
                                                            );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
    Hybridareaarray1.Append(Cellarea1);
    Hybridareaarray1.Append(Cellarea2);
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
    
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==0,_L("wrong array count"));
    Hybridarea->SetHybridArea(Hybridareaarray1);
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
        
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));      
    CleanupStack::PopAndDestroy( Hybridarea ); 
        
    return KErrNone;    

    }


// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewL2L
// Testing CLbtGeoWlan::NewL()
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestNewL2L( CStifItemParser& aItem )
    {

    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
        
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode2,
                                                        Networkidentitycode2,
                                                        Locationareacode2,
                                                        CellId2
                                                            );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
    Hybridareaarray1.Append(Cellarea1);
    Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    //Push to cleanup stack
    CleanupStack::PushL( Hybridarea );
        
    
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
    
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
    
    TBuf<4> Networkcountrycode3 = _L("3000");
    TBuf<8> Networkidentitycode3 = _L("30000000");
    TUint Locationareacode3 = 300;
    TUint CellId3 = 300;
        
    CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode3,
                                                        Networkidentitycode3,
                                                        Locationareacode3,
                                                        CellId3
                                                            );
                                                            
    TBuf<4> Networkcountrycode4 = _L("4000");
    TBuf<8> Networkidentitycode4 = _L("40000000");
    TUint Locationareacode4 = 400;
    TUint CellId4 = 400;
        
    CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode4,
                                                        Networkidentitycode4,
                                                        Locationareacode4,
                                                        CellId4
                                                            );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray3 ;
   // Hybridareaarray3.Append(Cellarea1);
   // Hybridareaarray3.Append(Cellarea2);
    Hybridareaarray3.Append(Cellarea3);
    Hybridareaarray3.Append(Cellarea4);
    Hybridarea->SetHybridArea(Hybridareaarray3);
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
        
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));      
    
    /*base=Hybridareaarray2[2];
                
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));   */   
    CleanupStack::PopAndDestroy( Hybridarea ); 
        
    return KErrNone;    

    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewL3L
// Testing CLbtGeoWlan::NewL() with circular area as part of the Hybrid area array
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestNewL3L( CStifItemParser& aItem )
    {

    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    TCoordinate coordinate(62.5285,23.9385);
        
    CLbtGeoCircle* circlearea=CLbtGeoCircle::NewL(coordinate,1000);
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
    Hybridareaarray1.Append(Cellarea1);
    Hybridareaarray1.Append(circlearea);
    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    //Push to cleanup stack
    CleanupStack::PushL( Hybridarea );
        
    
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
    
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
      
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
        
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    CLbtGeoCircle* circle2 =NULL;
    if(base->Type()==CLbtGeoAreaBase::ECircle)
    {
    circle2= static_cast<CLbtGeoCircle*> (base);
    }    
    
    TCoordinate center2 = circle2->Center();
    TReal32 distance;
    center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
    if(distance!=0)
    {
        return KErrGeneral;
    }
    TReal radius = circle2->Radius();
    if(radius != 1000)
    {
        return KErrGeneral;
    }
   
    CleanupStack::PopAndDestroy( Hybridarea ); 
        
    return KErrNone;    

    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewL4L
// Testing CLbtGeoWlan::NewL() using empty array
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestNewL4L( CStifItemParser& aItem )
    {
 
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
           
    return KErrNone;    

    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewL5L
// Testing CLbtGeoWlan::NewL() with CLbtGeoRect as one of the arae in the array
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestNewL5L( CStifItemParser& aItem )
    {
 
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    CLbtGeoRect* Rectarea = CLbtGeoRect::NewL( 20,70,20,70);
    
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
    Hybridareaarray1.Append(Cellarea1);
    Hybridareaarray1.Append(Rectarea);
    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
		return KErrNone;
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewLC1L
// Testing CLbtGeoWlan::NewLC()
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestNewLC1L( CStifItemParser& aItem )
    {

    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC();
    
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
        
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode2,
                                                        Networkidentitycode2,
                                                        Locationareacode2,
                                                        CellId2
                                                            );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
            Hybridareaarray1.Append(Cellarea1);
            Hybridareaarray1.Append(Cellarea2);
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
    
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==0,_L("wrong array count"));
    Hybridarea->SetHybridArea(Hybridareaarray1);
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
        
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));      
    CleanupStack::PopAndDestroy( Hybridarea ); 
        
    return KErrNone;    

    }


// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewLC2L
// Testing CLbtGeoWlan::NewLC()
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestNewLC2L( CStifItemParser& aItem )
    {

    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
        
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode2,
                                                        Networkidentitycode2,
                                                        Locationareacode2,
                                                        CellId2
                                                            );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                Hybridareaarray1.Append(Cellarea1);
                Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC(Hybridareaarray1);
    
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
    
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
    
    TBuf<4> Networkcountrycode3 = _L("3000");
    TBuf<8> Networkidentitycode3 = _L("30000000");
    TUint Locationareacode3 = 300;
    TUint CellId3 = 200;
        
    CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode3,
                                                        Networkidentitycode3,
                                                        Locationareacode3,
                                                        CellId3
                                                            );
    TBuf<4> Networkcountrycode4 = _L("4000");
    TBuf<8> Networkidentitycode4 = _L("40000000");
    TUint Locationareacode4 = 400;
    TUint CellId4 = 400;
        
    CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode4,
                                                        Networkidentitycode4,
                                                        Locationareacode4,
                                                        CellId4
                                                            );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray3 ;
   // Hybridareaarray3.Append(Cellarea1);
   // Hybridareaarray3.Append(Cellarea2);
    Hybridareaarray3.Append(Cellarea3);
    Hybridareaarray3.Append(Cellarea4);
    Hybridarea->SetHybridArea(Hybridareaarray3);
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
        
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));      
    
    
    CleanupStack::PopAndDestroy( Hybridarea ); 
    return KErrNone;    

    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewL3L
// Testing CLbtGeoWlan::NewL() with circular area as part of the Hybrid area array
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestNewLC3L( CStifItemParser& aItem )
    {

    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    TCoordinate coordinate(62.5285,23.9385);
        
    CLbtGeoCircle* circlearea=CLbtGeoCircle::NewL(coordinate,1000);
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                    Hybridareaarray1.Append(Cellarea1);
                    Hybridareaarray1.Append(circlearea);
    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC(Hybridareaarray1);
    
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
    
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
      
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
        
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    CLbtGeoCircle* circle2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECircle)
    {
    circle2= static_cast<CLbtGeoCircle*> (base);
    }    
    
    TCoordinate center2 = circle2->Center();
    TReal32 distance;
    center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
    if(distance!=0)
    {
        return KErrGeneral;
    }
    TReal radius = circle2->Radius();
    if(radius != 1000)
    {
        return KErrGeneral;
    }
   
    CleanupStack::PopAndDestroy( Hybridarea ); 
        
    return KErrNone;    

    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewLC3L
// Testing CLbtGeoWlan::NewLC() using empty array
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestNewLC4L( CStifItemParser& aItem )
    {
 
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC(Hybridareaarray1);
        
    return KErrNone;    

    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewLC5L
// Testing CLbtGeoWlan::NewLC() with CLbtGeoRect as one of the arae in the array
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestNewLC5L( CStifItemParser& aItem )
    {
 
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    CLbtGeoRect* Rectarea = CLbtGeoRect::NewL( 20,70,20,70);
    
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                        Hybridareaarray1.Append(Cellarea1);
                        Hybridareaarray1.Append(Rectarea);
    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC(Hybridareaarray1);
		return KErrNone;
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetHybridArea1L
// Testing SetHybridArea with one cellular area and one circular area
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestSetHybridArea1L( CStifItemParser& aItem )
    {

    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL();
    //Push to cleanup stack
    CleanupStack::PushL( Hybridarea );
        
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    TCoordinate coordinate(62.5285,23.9385);
           
    CLbtGeoCircle* circlearea=CLbtGeoCircle::NewL(coordinate,1000);
    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                            Hybridareaarray1.Append(Cellarea1);
                            Hybridareaarray1.Append(circlearea);
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
    
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==0,_L("wrong array count"));
    Hybridarea->SetHybridArea(Hybridareaarray1);
    Hybridareaarray2 = Hybridarea->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
        
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
                
    CLbtGeoCircle* circle2 =NULL;
    if(base->Type()==CLbtGeoAreaBase::ECircle)
    {
    circle2= static_cast<CLbtGeoCircle*> (base);
    }    
    
    TCoordinate center2 = circle2->Center();
    TReal32 distance;
    center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
    if(distance!=0)
    {
        return KErrGeneral;
    }
    TReal radius = circle2->Radius();
    if(radius != 1000)
    {
        return KErrGeneral;
    }
    CleanupStack::PopAndDestroy( Hybridarea ); 
        
    return KErrNone;    

    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewL4L
// Testing SetHybridArea with empty array
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestSetHybridArea2L( CStifItemParser& aItem )
    {
 
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL();
    Hybridarea->SetHybridArea(Hybridareaarray1);
           
    return KErrNone;    

    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestNewL5L
// Testing SetHybridArea with CLbtGeoRect as one of the arae in the array
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestSetHybridArea3L( CStifItemParser& aItem )
    {
 
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    CLbtGeoRect* Rectarea = CLbtGeoRect::NewL( 20,70,20,70);
    
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                                Hybridareaarray1.Append(Cellarea1);
                                Hybridareaarray1.Append(Rectarea);
    TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL();
    Hybridarea->SetHybridArea(Hybridareaarray1);
		return KErrNone;
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestInternalizeAndExternalizeL
// Calling Bssid() function by passing index greater than number of elements in the array
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestInternalizeAndExternalizeL( CStifItemParser& aItem )
    {

    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC();
        
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
        
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode2,
                                                        Networkidentitycode2,
                                                        Locationareacode2,
                                                        CellId2
                                                            );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
    Hybridareaarray1.Append(Cellarea1);
    Hybridareaarray1.Append(Cellarea2);
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
    Hybridarea->SetHybridArea(Hybridareaarray1);
    
    CBufFlat* buffer= CBufFlat::NewL(256);
    CleanupStack::PushL( buffer );  
   
    RBufWriteStream wr;
    wr.Open(*buffer);
    CleanupClosePushL(wr);
    Hybridarea->ExternalizeL(wr);
   
    wr.CommitL();
    CleanupStack::PopAndDestroy(&wr);

    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL();
       
    //Push to cleanup stack
    CleanupStack::PushL( Hybridarea2 ); 
   
    RBufReadStream rd;
    rd.Open(*buffer);
    CleanupClosePushL(rd);
   
    Hybridarea2->InternalizeL(rd);
   
    CleanupStack::PopAndDestroy(&rd);
   
    buffer->Reset();
   
    Hybridareaarray2 = Hybridarea2->HybridArea();
    AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
        
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));      
          
    CleanupStack::PopAndDestroy( 3 );
        
    return KErrNone;    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCLbtTriggerConditionArea1L
// Allocates and constructs a new Trigger Condition area object using CLbtGeoHybrid 1
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestCLbtTriggerConditionArea1L( CStifItemParser& aItem )
    {

    CLbtTriggerConditionArea* cond1= CLbtTriggerConditionArea::NewL( );
    CleanupStack::PushL( cond1 ); 
    
    cond1->SetDirection( CLbtTriggerConditionArea::EFireOnExit );
  
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
        
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode1,
                                                        Networkidentitycode1,
                                                        Locationareacode1,
                                                        CellId1
                                                            );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
        
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode2,
                                                        Networkidentitycode2,
                                                        Locationareacode2,
                                                        CellId2
                                                            );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
    Hybridareaarray1.Append(Cellarea1);
    Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
        
    cond1->SetTriggerArea( Hybridarea );
    
        
    CLbtGeoAreaBase* TrigArea=cond1->TriggerArea();
    
    AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
    CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));      
    
    CleanupStack::PopAndDestroy( 1 );
    
    return KErrNone;
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCLbtTriggerConditionArea2L
// Allocates and constructs a new Trigger Condition area object using CLbtGeoWlan 2
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestCLbtTriggerConditionArea2L( CStifItemParser& aItem )
    {

    CLbtTriggerConditionArea* cond1= CLbtTriggerConditionArea::NewLC( );
   
   cond1->SetDirection( CLbtTriggerConditionArea::EFireOnExit );
 
   TBuf<4> Networkcountrycode1 = _L("1000");
   TBuf<8> Networkidentitycode1 = _L("10000000");
   TUint Locationareacode1 = 100;
   TUint CellId1 = 100;
       
   CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
   TBuf<4> Networkcountrycode2 = _L("2000");
   TBuf<8> Networkidentitycode2 = _L("20000000");
   TUint Locationareacode2 = 200;
   TUint CellId2 = 200;
       
   CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
   RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
   Hybridareaarray1.Append(Cellarea1);
   Hybridareaarray1.Append(Cellarea2);
   CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
   cond1->SetTriggerArea( Hybridarea );
   
       
   CLbtGeoAreaBase* TrigArea=cond1->TriggerArea();
   
   AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
   CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
   
   CLbtGeoAreaBase* base=Hybridareaarray2[0];
           
   CLbtGeoCell* cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
   
   base=Hybridareaarray2[1];
           
   cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));      
   
   CleanupStack::PopAndDestroy( 1 );
   
   return KErrNone;
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCLbtTriggerConditionArea3L
// Allocates and constructs a new Trigger Condition area object using CLbtGeoWlan 3
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestCLbtTriggerConditionArea3L( CStifItemParser& aItem )
    {

    TBuf<4> Networkcountrycode1 = _L("1000");
   TBuf<8> Networkidentitycode1 = _L("10000000");
   TUint Locationareacode1 = 100;
   TUint CellId1 = 100;
       
   CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
   TBuf<4> Networkcountrycode2 = _L("2000");
   TBuf<8> Networkidentitycode2 = _L("20000000");
   TUint Locationareacode2 = 200;
   TUint CellId2 = 200;
       
   CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
   RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
   Hybridareaarray1.Append(Cellarea1);
   Hybridareaarray1.Append(Cellarea2);
   CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    CLbtTriggerConditionArea* cond1= CLbtTriggerConditionArea::NewL(Hybridarea,CLbtTriggerConditionArea::EFireOnExit );
    CleanupStack::PushL( cond1 ); 
        
    CLbtGeoAreaBase* TrigArea=cond1->TriggerArea();
       
   AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
   CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
   
   CLbtGeoAreaBase* base=Hybridareaarray2[0];
           
   CLbtGeoCell* cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
   
   base=Hybridareaarray2[1];
           
   cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
    
    CleanupStack::PopAndDestroy( 1 );
    
    return KErrNone;
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCLbtTriggerConditionArea4L
// Internalize & Externalize (ClbtTriggerConditionArea)
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//


TInt CTestHybridTriggers::TC_TestCLbtTriggerConditionArea4L( CStifItemParser& /* aItem */ )
    {
    CLbtTriggerConditionArea* cond1= CLbtTriggerConditionArea::NewL( );
    CleanupStack::PushL( cond1 ); 
    
    cond1->SetDirection( CLbtTriggerConditionArea::EFireOnExit );
    
    TBuf<4> Networkcountrycode1 = _L("1000");
   TBuf<8> Networkidentitycode1 = _L("10000000");
   TUint Locationareacode1 = 100;
   TUint CellId1 = 100;
       
   CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
   TBuf<4> Networkcountrycode2 = _L("2000");
   TBuf<8> Networkidentitycode2 = _L("20000000");
   TUint Locationareacode2 = 200;
   TUint CellId2 = 200;
       
   CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
   RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
   Hybridareaarray1.Append(Cellarea1);
   Hybridareaarray1.Append(Cellarea2);
   CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
   cond1->SetTriggerArea( Hybridarea );
    
    CBufFlat* buffer= CBufFlat::NewL(256);
    CleanupStack::PushL( buffer );  
    
    RBufWriteStream wr;
    wr.Open(*buffer);
    CleanupClosePushL(wr);    
    cond1->ExternalizeL(wr);
    
    wr.CommitL();
    CleanupStack::PopAndDestroy();
    
    CLbtTriggerConditionArea* cond2= CLbtTriggerConditionArea::NewL( );
    CleanupStack::PushL( cond2 );
    
    RBufReadStream rd;
    rd.Open(*buffer);
    CleanupClosePushL(rd);    
    cond2->InternalizeL(rd);
    
    CleanupStack::PopAndDestroy();
    
    buffer->Reset(); 
    
    CLbtGeoAreaBase* TrigArea=cond2->TriggerArea();
           
   AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
   CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
   
   CLbtGeoAreaBase* base=Hybridareaarray2[0];
           
   CLbtGeoCell* cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
   
   base=Hybridareaarray2[1];
           
   cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
             
   
    CleanupStack::PopAndDestroy( 3 );
    
    return KErrNone;
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea1L
// Allocates and constructs a new CLbtTriggerFilterByArea object using CLbtGeoHybrid 1
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea1L( CStifItemParser& /* aItem */ )
    {
            
    CLbtTriggerFilterByArea* areafilter=CLbtTriggerFilterByArea::NewL();   
    CleanupStack::PushL( areafilter ); 
    
    TBuf<4> Networkcountrycode1 = _L("1000");
   TBuf<8> Networkidentitycode1 = _L("10000000");
   TUint Locationareacode1 = 100;
   TUint CellId1 = 100;
       
   CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
   TBuf<4> Networkcountrycode2 = _L("2000");
   TBuf<8> Networkidentitycode2 = _L("20000000");
   TUint Locationareacode2 = 200;
   TUint CellId2 = 200;
       
   CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
   RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
   Hybridareaarray1.Append(Cellarea1);
   Hybridareaarray1.Append(Cellarea2);
   CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    areafilter->SetArea(Hybridarea);
    
  
    CLbtGeoAreaBase* filterarea=areafilter->Area();
    AssertTrueL(filterarea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
            
    CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(filterarea); 
        RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
   CLbtGeoAreaBase* base=Hybridareaarray2[0];
           
   CLbtGeoCell* cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
   
   base=Hybridareaarray2[1];
           
   cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
             
    CleanupStack::PopAndDestroy();

    return KErrNone;
     }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea2L
// Allocates and constructs a new CLbtTriggerFilterByArea object using CLbtGeoHybrid 1
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea2L( CStifItemParser& /* aItem */ )
    {
            
    CLbtTriggerFilterByArea* areafilter=CLbtTriggerFilterByArea::NewLC();   
    
    TBuf<4> Networkcountrycode1 = _L("1000");
   TBuf<8> Networkidentitycode1 = _L("10000000");
   TUint Locationareacode1 = 100;
   TUint CellId1 = 100;
       
   CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
   TBuf<4> Networkcountrycode2 = _L("2000");
   TBuf<8> Networkidentitycode2 = _L("20000000");
   TUint Locationareacode2 = 200;
   TUint CellId2 = 200;
       
   CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
   RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
   Hybridareaarray1.Append(Cellarea1);
   Hybridareaarray1.Append(Cellarea2);
   CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    areafilter->SetArea(Hybridarea);
    
  
    CLbtGeoAreaBase* filterarea=areafilter->Area();
    AssertTrueL(filterarea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
            
    CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(filterarea); 
        RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
   CLbtGeoAreaBase* base=Hybridareaarray2[0];
           
   CLbtGeoCell* cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
   
   base=Hybridareaarray2[1];
           
   cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
             
    CleanupStack::PopAndDestroy(1);

    return KErrNone;
     }


// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea3L
// Allocates and constructs a new CLbtTriggerFilterByArea object using CLbtGeoWlan 3
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea3L( CStifItemParser& /* aItem */ )
    {
            
    TBuf<4> Networkcountrycode1 = _L("1000");
      TBuf<8> Networkidentitycode1 = _L("10000000");
      TUint Locationareacode1 = 100;
      TUint CellId1 = 100;
          
      CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode1,
                                                          Networkidentitycode1,
                                                          Locationareacode1,
                                                          CellId1
                                                              );
      TBuf<4> Networkcountrycode2 = _L("2000");
      TBuf<8> Networkidentitycode2 = _L("20000000");
      TUint Locationareacode2 = 200;
      TUint CellId2 = 200;
          
      CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode2,
                                                          Networkidentitycode2,
                                                          Locationareacode2,
                                                          CellId2
                                                              );
      RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
      Hybridareaarray1.Append(Cellarea1);
      Hybridareaarray1.Append(Cellarea2);
      CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    CLbtTriggerFilterByArea* areafilter=CLbtTriggerFilterByArea::NewL(Hybridarea); 
    CleanupStack::PushL( areafilter ); 
  
    CLbtGeoAreaBase* filterarea=areafilter->Area();
        AssertTrueL(filterarea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
                
        CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(filterarea); 
            RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
           
       CLbtGeoAreaBase* base=Hybridareaarray2[0];
               
       CLbtGeoCell* cell2=NULL;
       if(base->Type()==CLbtGeoAreaBase::ECellular)
       {
           cell2= static_cast<CLbtGeoCell*> (base);
       }    
       
       AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
       base=Hybridareaarray2[1];
               
       cell2=NULL;
       if(base->Type()==CLbtGeoAreaBase::ECellular)
       {
           cell2= static_cast<CLbtGeoCell*> (base);
       }    
       
       AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
    CleanupStack::PopAndDestroy();

    return KErrNone;
     }
// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea4L
// Internalize & Externalize(CLbtTriggerFilterByArea).
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea4L( CStifItemParser& /* aItem */ )
    {
            
    TBuf<4> Networkcountrycode1 = _L("1000");
      TBuf<8> Networkidentitycode1 = _L("10000000");
      TUint Locationareacode1 = 100;
      TUint CellId1 = 100;
          
      CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode1,
                                                          Networkidentitycode1,
                                                          Locationareacode1,
                                                          CellId1
                                                              );
      TBuf<4> Networkcountrycode2 = _L("2000");
      TBuf<8> Networkidentitycode2 = _L("20000000");
      TUint Locationareacode2 = 200;
      TUint CellId2 = 200;
          
      CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode2,
                                                          Networkidentitycode2,
                                                          Locationareacode2,
                                                          CellId2
                                                              );
      RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
      Hybridareaarray1.Append(Cellarea1);
      Hybridareaarray1.Append(Cellarea2);
      CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
    CLbtTriggerFilterByArea* filterarea1= CLbtTriggerFilterByArea::NewL( Hybridarea );
    CleanupStack::PushL( filterarea1 );
   
    CBufFlat* buffer= CBufFlat::NewL(256);
    CleanupStack::PushL( buffer );  
   
    RBufWriteStream wr;
    wr.Open(*buffer);
    CleanupClosePushL(wr);
    filterarea1->ExternalizeL(wr);
   
    wr.CommitL();
    CleanupStack::PopAndDestroy();
   
    
    CLbtTriggerFilterByArea* filterarea2= CLbtTriggerFilterByArea::NewL();
   
    //Push to cleanup stack
    CleanupStack::PushL( filterarea2); 
   
    RBufReadStream rd;
    rd.Open(*buffer);
    CleanupClosePushL(rd);
   
    filterarea2->InternalizeL(rd);
   
    CleanupStack::PopAndDestroy();
   
    buffer->Reset();
   
    CLbtGeoAreaBase* filterareabase=filterarea2->Area();
    AssertTrueL(filterareabase->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
            
    CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(filterareabase); 
        RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
           
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
        {
       cell2= static_cast<CLbtGeoCell*> (base);
        }    
   
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
   
    base=Hybridareaarray2[1];
           
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
        {
       cell2= static_cast<CLbtGeoCell*> (base);
        }    
   
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
    CleanupStack::Pop(filterarea2);
    CleanupStack::Pop(buffer);
    CleanupStack::Pop(filterarea1);
    return KErrNone;
     }


// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCreatetrigger1L
// Creation of hybrid Entry type startup trigger
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestCreatetrigger1L(CStifItemParser& /*aItem*/)
    {
     RLbtServer lbtserver;
     RLbt lbt;
     iLog->Log(_L("Before connecting"));
     User::LeaveIfError( lbtserver.Connect() );
     CleanupClosePushL( lbtserver );
     iLog->Log(_L("Connection to RLbtServer Passed "));
     User::LeaveIfError( lbt.Open(lbtserver));
     iLog->Log(_L("Subsession opened "));
     CleanupClosePushL( lbt );
     TRAP_IGNORE(lbt.DeleteTriggersL());
      //Construct a startup trigger
     CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
     CleanupStack::PushL( trig );
     iLog->Log(_L("Startup Trigger Entry Created "));
    
    // Set Name
     trig->SetNameL(_L("Trigger1"));
   
     _LIT( KMyTriggerHandlingProcessName, "About.exe");
  
    
     TSecureId secureid;
     trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
     //set Requestor     
     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
     TBuf<KLbtMaxNameLength> ReqData=_L("");
     trig->SetRequestorL(ReqType,ReqFormat,ReqData);
    // set condition
    
     TBuf<4> Networkcountrycode1 = _L("1000");
       TBuf<8> Networkidentitycode1 = _L("10000000");
       TUint Locationareacode1 = 100;
       TUint CellId1 = 100;
           
       CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                           Networkcountrycode1,
                                                           Networkidentitycode1,
                                                           Locationareacode1,
                                                           CellId1
                                                               );
       TBuf<4> Networkcountrycode2 = _L("2000");
       TBuf<8> Networkidentitycode2 = _L("20000000");
       TUint Locationareacode2 = 200;
       TUint CellId2 = 200;
           
       CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                           Networkcountrycode2,
                                                           Networkidentitycode2,
                                                           Locationareacode2,
                                                           CellId2
                                                               );
       RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       Hybridareaarray1.Append(Cellarea1);
       Hybridareaarray1.Append(Cellarea2);
       CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    
    // ownership of Cellarea object transferred to the condition object
     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                 Hybridarea,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
     trig->SetCondition(condition); // ownership transferred to object
    
     TLbtTriggerId trigId;
        
        
     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
     CleanupStack::PushL( notifier );
    
     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
     notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     wait->Start( );
     TInt err =notifier->iStatus.Int(); 
     if(err!=KErrNone)
         {
         User::LeaveIfError(err);
         }
     iLog->Log(_L("Trigger Created"));
    
      
     CLbtTriggerInfo *Triginfo ;
     iLog->Log(_L("Before GetTriggerLC "));
    
     Triginfo= lbt.GetTriggerLC(trigId);
    
     if(Triginfo==NULL)
     {
     CleanupStack::Pop(Triginfo);
     CleanupStack::PopAndDestroy( notifier );
     CleanupStack::PopAndDestroy( trig );
     CleanupStack::Pop( &lbt );
     CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
     return KErrNotFound;  
     }
     else
     {
     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
         RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
     CleanupStack::Pop(Triginfo);
     CleanupStack::PopAndDestroy( notifier );
     CleanupStack::PopAndDestroy( trig );
     CleanupStack::Pop( &lbt );
     CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
     return KErrNone;
     }
   
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCreatetrigger2L
// Creation of hybrid Entry type session trigger
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestCreatetrigger2L(CStifItemParser& /*aItem*/)
    {
     RLbtServer lbtserver;
     RLbt lbt;
     iLog->Log(_L("Before connecting"));
     User::LeaveIfError( lbtserver.Connect() );
     CleanupClosePushL( lbtserver );
     iLog->Log(_L("Connection to RLbtServer Passed "));
     User::LeaveIfError( lbt.Open(lbtserver));
     iLog->Log(_L("Subsession opened "));
     CleanupClosePushL( lbt );
 
      //Construct a startup trigger
     CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
     CleanupStack::PushL( trig );
     iLog->Log(_L("Startup Trigger Entry Created "));
    
    // Set Name
     trig->SetNameL(_L("Trigger1"));
    
     //set Requestor     
     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
     TBuf<KLbtMaxNameLength> ReqData=_L("");
     trig->SetRequestorL(ReqType,ReqFormat,ReqData);
    // set condition
    
     TBuf<4> Networkcountrycode1 = _L("1000");
       TBuf<8> Networkidentitycode1 = _L("10000000");
       TUint Locationareacode1 = 100;
       TUint CellId1 = 100;
           
       CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                           Networkcountrycode1,
                                                           Networkidentitycode1,
                                                           Locationareacode1,
                                                           CellId1
                                                               );
       TBuf<4> Networkcountrycode2 = _L("2000");
       TBuf<8> Networkidentitycode2 = _L("20000000");
       TUint Locationareacode2 = 200;
       TUint CellId2 = 200;
           
       CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                           Networkcountrycode2,
                                                           Networkidentitycode2,
                                                           Locationareacode2,
                                                           CellId2
                                                               );
       RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
              Hybridareaarray1.Append(Cellarea1);
              Hybridareaarray1.Append(Cellarea2);
       CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    
    // ownership of Cellarea object transferred to the condition object
     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                 Hybridarea,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
     trig->SetCondition(condition); // ownership transferred to object
    
     TLbtTriggerId trigId;
        
        
     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
     CleanupStack::PushL( notifier );
    
     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
     notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     wait->Start( );
     iLog->Log(_L("Trigger Created"));
    
      
     CLbtTriggerInfo *Triginfo ;
     iLog->Log(_L("Before GetTriggerLC "));
    
     Triginfo= lbt.GetTriggerLC(trigId);
    
     if(Triginfo==NULL)
     {
     CleanupStack::Pop(Triginfo);
     CleanupStack::PopAndDestroy( notifier );
     CleanupStack::PopAndDestroy( trig );
     CleanupStack::Pop( &lbt );
     CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
     return KErrNotFound;  
     }
     else
     {
     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
         RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
     CleanupStack::Pop(Triginfo);
     CleanupStack::PopAndDestroy( notifier );
     CleanupStack::PopAndDestroy( trig );
     CleanupStack::Pop( &lbt );
     CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
     return KErrNone;
     }
   
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCreatetrigger3L
// Creation of hybrid Entry type startup trigger with one circular area and one cellular area
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestCreatetrigger3L(CStifItemParser& /*aItem*/)
    {
     RLbtServer lbtserver;
     RLbt lbt;
     iLog->Log(_L("Before connecting"));
     User::LeaveIfError( lbtserver.Connect() );
     CleanupClosePushL( lbtserver );
     iLog->Log(_L("Connection to RLbtServer Passed "));
     User::LeaveIfError( lbt.Open(lbtserver));
     iLog->Log(_L("Subsession opened "));
     CleanupClosePushL( lbt );
 
      //Construct a startup trigger
     CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
     CleanupStack::PushL( trig );
     iLog->Log(_L("Startup Trigger Entry Created "));
    
    // Set Name
     trig->SetNameL(_L("Trigger1"));
   
     _LIT( KMyTriggerHandlingProcessName, "About.exe");
  
     TSecureId secureid;
     trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
     //set Requestor     
     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
     TBuf<KLbtMaxNameLength> ReqData=_L("");
     trig->SetRequestorL(ReqType,ReqFormat,ReqData);
    // set condition
    
     TBuf<4> Networkcountrycode1 = _L("1000");
     TBuf<8> Networkidentitycode1 = _L("10000000");
     TUint Locationareacode1 = 100;
     TUint CellId1 = 100;
       
     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
       TCoordinate coordinate(62.5285,23.9385);
       TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6);            
       CLbtGeoCircle* circlearea=CLbtGeoCircle::NewL(coordinate,1000);
       RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
              Hybridareaarray1.Append(Cellarea1);
              Hybridareaarray1.Append(circlearea);
       CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    
    // ownership of Cellarea object transferred to the condition object
     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                 Hybridarea,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
     trig->SetCondition(condition); // ownership transferred to object
    
     TLbtTriggerId trigId;
        
        
     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
     CleanupStack::PushL( notifier );
    
     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
     notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     wait->Start( );
     iLog->Log(_L("Trigger Created"));
    
      
     CLbtTriggerInfo *Triginfo ;
     iLog->Log(_L("Before GetTriggerLC "));
    
     Triginfo= lbt.GetTriggerLC(trigId);
    
     if(Triginfo==NULL)
     {
     CleanupStack::Pop(Triginfo);
     CleanupStack::PopAndDestroy( notifier );
     CleanupStack::PopAndDestroy( trig );
     CleanupStack::Pop( &lbt );
     CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
     return KErrNotFound;  
     }
     else
     {
     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
         RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
                    
    CLbtGeoCircle* circle2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECircle)
    {
    circle2= static_cast<CLbtGeoCircle*> (base);
    }    
    
    TCoordinate center2 = circle2->Center();
    TReal32 distance;
    center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
    if(distance!=0)
    {
        return KErrGeneral;
    }
    TReal radius = circle2->Radius();
    if(radius != 1000)
    {
        return KErrGeneral;
    }
     CleanupStack::Pop(Triginfo);
     CleanupStack::PopAndDestroy( notifier );
     CleanupStack::PopAndDestroy( trig );
     CleanupStack::Pop( &lbt );
     CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
     return KErrNone;
     }
   
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestCreatetrigger4L
// Creation of hybrid Entry type session trigger with one circular area and one cellular area
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestCreatetrigger4L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
         RLbt lbt;
         iLog->Log(_L("Before connecting"));
         User::LeaveIfError( lbtserver.Connect() );
         CleanupClosePushL( lbtserver );
         iLog->Log(_L("Connection to RLbtServer Passed "));
         User::LeaveIfError( lbt.Open(lbtserver));
         iLog->Log(_L("Subsession opened "));
         CleanupClosePushL( lbt );
     
          //Construct a startup trigger
         CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
        
        //Push to cleanup stack
         CleanupStack::PushL( trig );
         iLog->Log(_L("Startup Trigger Entry Created "));
        
        // Set Name
         trig->SetNameL(_L("Trigger1"));
       
                  
         //set Requestor     
         CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
         CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
         TBuf<KLbtMaxNameLength> ReqData=_L("");
         trig->SetRequestorL(ReqType,ReqFormat,ReqData);
        // set condition
        
         TBuf<4> Networkcountrycode1 = _L("1000");
         TBuf<8> Networkidentitycode1 = _L("10000000");
         TUint Locationareacode1 = 100;
         TUint CellId1 = 100;
           
         CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                           Networkcountrycode1,
                                                           Networkidentitycode1,
                                                           Locationareacode1,
                                                           CellId1
                                                               );
           TCoordinate coordinate(62.5285,23.9385);
           TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6);            
           CLbtGeoCircle* circlearea=CLbtGeoCircle::NewL(coordinate,1000);
           RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                         Hybridareaarray1.Append(Cellarea1);
                         Hybridareaarray1.Append(circlearea);
           CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
        
        
        // ownership of Cellarea object transferred to the condition object
         CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                     Hybridarea,
                                                    CLbtTriggerConditionArea::EFireOnEnter);
            
         trig->SetCondition(condition); // ownership transferred to object
        
         TLbtTriggerId trigId;
            
            
         CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
         CleanupStack::PushL( notifier );
        
         CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
            
         notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
         wait->Start( );
         iLog->Log(_L("Trigger Created"));
        
          
         CLbtTriggerInfo *Triginfo ;
         iLog->Log(_L("Before GetTriggerLC "));
        
         Triginfo= lbt.GetTriggerLC(trigId);
        
         if(Triginfo==NULL)
         {
         CleanupStack::Pop(Triginfo);
         CleanupStack::PopAndDestroy( notifier );
         CleanupStack::PopAndDestroy( trig );
         CleanupStack::Pop( &lbt );
         CleanupStack::PopAndDestroy( &lbtserver );
        //delete wait;
         return KErrNotFound;  
         }
         else
         {
         CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
         CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
         CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
         AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
         CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
             RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
        
        CLbtGeoAreaBase* base=Hybridareaarray2[0];
                
        CLbtGeoCell* cell2=NULL;
        if(base->Type()==CLbtGeoAreaBase::ECellular)
        {
            cell2= static_cast<CLbtGeoCell*> (base);
        }    
        
        AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
        AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
        AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
        AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
        AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
        
        base=Hybridareaarray2[1];
                        
        CLbtGeoCircle* circle2=NULL;
        if(base->Type()==CLbtGeoAreaBase::ECircle)
        {
        circle2= static_cast<CLbtGeoCircle*> (base);
        }    
        
        TCoordinate center2 = circle2->Center();
        TReal32 distance;
        center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
        if(distance!=0)
        {
            return KErrGeneral;
        }
        TReal radius = circle2->Radius();
        if(radius != 1000)
        {
            return KErrGeneral;
        }
         CleanupStack::Pop(Triginfo);
         CleanupStack::PopAndDestroy( notifier );
         CleanupStack::PopAndDestroy( trig );
         CleanupStack::Pop( &lbt );
         CleanupStack::PopAndDestroy( &lbtserver );
        //delete wait;
         return KErrNone;
         }
   
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTrigger1L
// Deletion of Hybrid startup trigger
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTrigger1L(CStifItemParser& /*aItem*/)
    {
     RLbtServer lbtserver;
     RLbt lbt;
     iLog->Log(_L("Before connecting"));
     User::LeaveIfError( lbtserver.Connect() );
     CleanupClosePushL( lbtserver );
     iLog->Log(_L("Connection to RLbtServer Passed "));
     User::LeaveIfError( lbt.Open(lbtserver));
     iLog->Log(_L("Subsession opened "));
     CleanupClosePushL( lbt );
 
 
      //Construct a startup trigger
    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    iLog->Log(_L("Startup Trigger Entry Created "));
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
   
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
   
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    TBuf<4> Networkcountrycode1 = _L("1000");
        TBuf<8> Networkidentitycode1 = _L("10000000");
        TUint Locationareacode1 = 100;
        TUint CellId1 = 100;   
    // set condition
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                           Networkcountrycode1,
                                                           Networkidentitycode1,
                                                           Locationareacode1,
                                                           CellId1
                                                               );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                  Hybridareaarray1.Append(Cellarea1);
                  Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    // ownership of Cellarea object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                Hybridarea,
                                                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);
    TLbtTriggerId trigId;
        
        
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
    wait->Start( );
    iLog->Log(_L("Trigger Created"));
    lbt.DeleteTriggerL(trigId);
    
   // CLbtTriggerInfo *Triginfo ;
    iLog->Log(_L("Before GetTriggerLC "));
    
    TRAPD(error, lbt.GetTriggerLC(trigId);CleanupStack::PopAndDestroy(  ););
    
    if(error==KErrNotFound)
    {
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::Pop( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrNone;    
    }
    else
    {
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::Pop( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrGeneral;
    }
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTrigger2L
// Deletion of Hybrid session trigger
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTrigger2L(CStifItemParser& /*aItem*/)
    {
     RLbtServer lbtserver;
     RLbt lbt;
     iLog->Log(_L("Before connecting"));
     User::LeaveIfError( lbtserver.Connect() );
     CleanupClosePushL( lbtserver );
     iLog->Log(_L("Connection to RLbtServer Passed "));
     User::LeaveIfError( lbt.Open(lbtserver));
     iLog->Log(_L("Subsession opened "));
     CleanupClosePushL( lbt );
 
 
      //Construct a startup trigger
     CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig );
    iLog->Log(_L("Startup Trigger Entry Created "));
    
    // Set Name
    trig->SetNameL(_L("Trigger1"));
   
   
    // set condition
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
     
    // ownership of Cellarea object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                Hybridarea,
                                                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);
    TLbtTriggerId trigId;
        
        
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
    wait->Start( );
    iLog->Log(_L("Trigger Created"));
    lbt.DeleteTriggerL(trigId);
    
  //  CLbtTriggerInfo *Triginfo ;
    iLog->Log(_L("Before GetTriggerLC "));
    
    TRAPD(error, lbt.GetTriggerLC(trigId);CleanupStack::PopAndDestroy(  ););
    
    if(error==KErrNotFound)
    {
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::Pop( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrNone;    
    }
    else
    {
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
    CleanupStack::Pop( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrGeneral;
    }
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers1L
// Deleting triggers using NULL filter synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers1L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
    RLbt lbt;
    
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
     
    TRAP_IGNORE(lbt.DeleteTriggersL());
      //Construct triggers
    CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
    CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig1 );
    CleanupStack::PushL( trig2 );
        
    trig1->SetNameL(_L("Trigger1"));
    trig2->SetNameL(_L("Trigger2"));
    trig1->SetState(CLbtTriggerEntry::EStateDisabled);
    trig2->SetState(CLbtTriggerEntry::EStateEnabled);
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
                                                           
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
      Hybridareaarray1.Append(Cellarea1);
      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
        
    CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
    CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
    
    trig1->SetCondition(condn1);
    trig2->SetCondition(condn2);
    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    TLbtTriggerId trigId1,trigId2;
    notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
    wait->Start( );
    
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
      
    TSecureId secureid;
    trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
    wait->Start( );
     
    lbt.DeleteTriggersL();
    
//    CLbtTriggerInfo* Triginfo=NULL;
    TRAPD(error,  lbt.GetTriggerLC(trigId1);CleanupStack::PopAndDestroy(  ));
    TRAPD(error2, lbt.GetTriggerLC(trigId2);CleanupStack::PopAndDestroy(  ));
    if(error==KErrNotFound && error2==KErrNotFound)
    {
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrNone;    
    }
    else
    {
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrGeneral;
    }
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers2L
// Deleting triggers in given Cellular using NULL filter asynchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers2L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
    RLbt lbt;
    
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
     
    TRAP_IGNORE(lbt.DeleteTriggersL());
      //Construct triggers
    CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
    CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig1 );
    CleanupStack::PushL( trig2 );
        
    trig1->SetNameL(_L("Trigger1"));
    trig2->SetNameL(_L("Trigger2"));
    trig1->SetState(CLbtTriggerEntry::EStateDisabled);
    trig2->SetState(CLbtTriggerEntry::EStateEnabled);
     
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);

    CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
    CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
    
    trig1->SetCondition(condn1);
    trig2->SetCondition(condn2);
    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    TLbtTriggerId trigId1,trigId2;
    notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
    wait->Start( );
    
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
      
    TSecureId secureid;
    trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
    wait->Start( );
    
    notifier->DeleteFilteredTriggers(lbt,NULL,wait);
    wait->Start();
//    CLbtTriggerInfo* Triginfo=NULL;
    TRAPD(error, lbt.GetTriggerLC(trigId1);CleanupStack::PopAndDestroy(  ));
    TRAPD(error2, lbt.GetTriggerLC(trigId2);CleanupStack::PopAndDestroy(  ));
    if(error==KErrNotFound && error2==KErrNotFound)
    {
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrNone;    
    }
    else
    {
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrGeneral;
    }
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers3L
// Deleting triggers using Area filter  constructed using Multiple CGI Area synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers3L(CStifItemParser& /*aItem*/)
    {
    return TC_TestDeleteTriggers3L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers4L
// Deleting triggers in given Cellular using Area filter asynchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers4L(CStifItemParser& /*aItem*/)
    {
    return TC_TestDeleteTriggers4L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers3L
// Deleting triggers using Area filter  constructed using Multiple CGI Area synchronously(when both the cells are not matching)
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers5L(CStifItemParser& /*aItem*/)
    {
    return TC_TestDeleteTriggers5L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers6L
// Deleting triggers in given Hybrid area using Area filter asynchronously(when both the cells are not matching)
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers6L(CStifItemParser& /*aItem*/)
    {
    return TC_TestDeleteTriggers6L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers7L
// Deleting triggers using Area filter  constructed using Multiple CGI Area synchronously(when one of the cells are not matching)
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers7L(CStifItemParser& /*aItem*/)
    {
    return TC_TestDeleteTriggers7L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers8L
// Deleting triggers in given Hybrid using Area filter asynchronously(when one of the cells are not matching)
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers8L(CStifItemParser& /*aItem*/)
    {
    return TC_TestDeleteTriggers8L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers9L
// Deleting triggers using composite filter  constructed using Multiple CGI Area synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers9L(CStifItemParser& /*aItem*/)
    {
    return TC_TestDeleteTriggers9L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers10L
// Deleting triggers in given Hybrid using composite filter asynchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers10L(CStifItemParser& /*aItem*/)
    {
    return TC_TestDeleteTriggers10L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers11L
// Deleting triggers using composite filter  constructed using Two Multiple CGI Area filters synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers11L(CStifItemParser& /*aItem*/)
    {
    return TC_TestDeleteTriggers11L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers12L
// Deleting triggers using composite filter  constructed using Two Multiple CGI Area filters asynchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestDeleteTriggers12L(CStifItemParser& /*aItem*/)
    {
    return TC_TestDeleteTriggers12L();
    
    }



// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers5L
// listing triggers  using NULL filter synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers1L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
    RLbt lbt;
    
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
    TRAP_IGNORE(lbt.DeleteTriggersL());
 
      //Construct triggers
    CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
    CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig1 );
    CleanupStack::PushL( trig2 );
        
    trig1->SetNameL(_L("Trigger1"));
    trig2->SetNameL(_L("Trigger2"));
    trig1->SetState(CLbtTriggerEntry::EStateDisabled);
    trig2->SetState(CLbtTriggerEntry::EStateEnabled);
    
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
    CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
    
    trig1->SetCondition(condn1);
    trig2->SetCondition(condn2);
    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    TLbtTriggerId trigId1,trigId2;
    notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
    wait->Start( );
    
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
      
    TSecureId secureid;
    trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
    wait->Start( );
        
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    lbt.GetTriggersL(trigInfoList,NULL );
    
    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* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
              RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));                
    }
    iLog->Log(_L("All checkings done "));    
    //free memory
    for ( TInt i = 0; i < count; i++ )
    {
    delete trigInfoList[i];
    }
    trigInfoList.Close();
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrNone;    
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers2L
// Listing triggers using NULL filter synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers2L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
    RLbt lbt;
    
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
     
    TRAP_IGNORE(lbt.DeleteTriggersL());
      //Construct triggers
    CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
    CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig1 );
    CleanupStack::PushL( trig2 );
        
    trig1->SetNameL(_L("Trigger1"));
    trig2->SetNameL(_L("Trigger2"));
    trig1->SetState(CLbtTriggerEntry::EStateDisabled);
    trig2->SetState(CLbtTriggerEntry::EStateEnabled);
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
    CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
    
    trig1->SetCondition(condn1);
    trig2->SetCondition(condn2);
    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    TLbtTriggerId trigId1,trigId2;
    notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
    wait->Start( );
    
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
      
    TSecureId secureid;
    trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
    wait->Start( );
        
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    notifier->GetTriggersList(lbt,trigInfoList,wait,NULL);
    wait->Start();
   
    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* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
              RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
    }
    iLog->Log(_L("All checkings done "));    
    //free memory
    for ( TInt i = 0; i < count; i++ )
    {
    delete trigInfoList[i];
    }
    trigInfoList.Close();
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrNone;    
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers3L
// listing triggers  using Area filter synchronously when both the cells are matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers3L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers3L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers4L
// listing triggers  using Area filter asynchronously when both the cells are matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers4L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers4L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers5L
// listing triggers  using Area filter synchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers5L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers5L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers6L
// listing triggers  using Area filter asynchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers6L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers6L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers7L
// listing triggers  using Area filter synchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers7L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers7L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers8L
// listing triggers  using Area filter asynchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers8L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers8L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers3L
// Deleting triggers using composite filter  constructed using Multiple CGI Area synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers9L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers9L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers10L
// listing triggers using composite filter  constructed using Multiple CGI Area asynchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers10L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers10L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers11L
// Listing triggers using composite filter  constructed using Two Multiple CGI Area filters synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers11L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers11L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers12L
// Listing triggers using composite filter  constructed using Two Multiple CGI Area filters synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers12L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers12L();
    }


// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers_Iterator1L
// listing triggers using NULL filter synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator1L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
    RLbt lbt;
    
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
    TRAP_IGNORE(lbt.DeleteTriggersL());
 
      //Construct triggers
    CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
    CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig1 );
    CleanupStack::PushL( trig2 );
        
    trig1->SetNameL(_L("Trigger1"));
    trig2->SetNameL(_L("Trigger2"));
    trig1->SetState(CLbtTriggerEntry::EStateDisabled);
    trig2->SetState(CLbtTriggerEntry::EStateEnabled);
     
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
    CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
    
    trig1->SetCondition(condn1);
    trig2->SetCondition(condn2);
    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    TLbtTriggerId trigId1,trigId2;
    notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
    wait->Start( );
    
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
      
    TSecureId secureid;
    trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
    wait->Start( );
    
    RArray<CLbtTriggerInfo> trigInfoList;
    lbt.CreateGetTriggerIteratorL(NULL);
    
    TInt i=0;
    CLbtTriggerInfo* trigInfo = lbt.GetNextTriggerLC(); 
    while ( trigInfo != NULL )
        {
            CleanupStack::Pop(trigInfo);
            i++;
            trigInfoList.Append(*trigInfo);
         // CleanupStack::PopAndDestroy(trigInfo);
          trigInfo = lbt.GetNextTriggerLC(); 
        }
    
    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* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
              RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
    }
    iLog->Log(_L("All checkings done "));    
    //free memory
    
    trigInfoList.Close();
    CleanupStack::Pop(trigInfo);
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrNone;    
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers_Iterator2L
// listing triggers using NULL filter asynchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator2L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
    RLbt lbt;
    
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
    TRAP_IGNORE(lbt.DeleteTriggersL()); 
 
      //Construct triggers
    CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
    CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig1 );
    CleanupStack::PushL( trig2 );
        
    trig1->SetNameL(_L("Trigger1"));
    trig2->SetNameL(_L("Trigger2"));
    trig1->SetState(CLbtTriggerEntry::EStateDisabled);
    trig2->SetState(CLbtTriggerEntry::EStateEnabled);
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
    CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
    
    trig1->SetCondition(condn1);
    trig2->SetCondition(condn2);
    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    TLbtTriggerId trigId1,trigId2;
    notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
    wait->Start( );
    
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
      
    TSecureId secureid;
    trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
    wait->Start( );
    
        
    RArray<CLbtTriggerInfo> trigInfoList;
    notifier->CreateIterator(lbt,wait,NULL);
    wait->Start( );
    
    TInt i=1;
    CLbtTriggerInfo* trigInfo = lbt.GetNextTriggerLC(); 
    while ( trigInfo != NULL )
        {
            CleanupStack::Pop(trigInfo);
            i++;
            trigInfoList.Append(*trigInfo);
         // CleanupStack::PopAndDestroy(trigInfo);
          trigInfo = lbt.GetNextTriggerLC(); 
        }
    
    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* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
              RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
    }
    iLog->Log(_L("All checkings done "));    
    //free memory
   
    trigInfoList.Close();
    CleanupStack::Pop(trigInfo);
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    return KErrNone;    
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers_Iterator3L
// listing triggers using Area filter synchronously using iterator
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator3L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers_Iterator3L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers_Iterator4L
// listing triggers using Area filter asynchronously using iterator
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator4L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers_Iterator4L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers_Iterator5L
// listing triggers  using Area filter synchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator5L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers_Iterator5L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers6L
// listing triggers  using Area filter asynchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator6L(CStifItemParser& /*aItem*/)
    {
    
    return TC_TestGetTriggers_Iterator6L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers7L
// listing triggers  using Area filter synchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator7L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers_Iterator7L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers8L
// listing triggers  using Area filter asynchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator8L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers_Iterator8L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestDeleteTriggers9L
// Deleting triggers using composite filter  constructed using Multiple CGI Area synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator9L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers_Iterator9L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers10L
// listing triggers using composite filter  constructed using Multiple CGI Area asynchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator10L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers_Iterator10L();
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers_Iterator11L
// Listing triggers using composite filter  constructed using Two Multiple CGI Area filters synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator11L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers_Iterator11L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers12L
// Listing triggers using composite filter  constructed using Two Multiple CGI Area filters synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator12L(CStifItemParser& /*aItem*/)
    {
    return TC_TestGetTriggers_Iterator12L();
    }


// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggersState1L
// listing triggers using NULL filter synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState1L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
    RLbt lbt;
    
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
     
    TRAP_IGNORE(lbt.DeleteTriggersL());
      //Construct triggers
    CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
    CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig1 );
    CleanupStack::PushL( trig2 );
        
    trig1->SetNameL(_L("Trigger1"));
    trig2->SetNameL(_L("Trigger2"));
    trig1->SetState(CLbtTriggerEntry::EStateDisabled);
    trig2->SetState(CLbtTriggerEntry::EStateEnabled);
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
    CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
    
    trig1->SetCondition(condn1);
    trig2->SetCondition(condn2);
    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    TLbtTriggerId trigId1,trigId2;
    notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
    wait->Start( );
    
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
      
    TSecureId secureid;
    trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
    wait->Start( );
        
    lbt.SetTriggersStateL(CLbtTriggerEntry::EStateEnabled,ELbtTrue,NULL);   
    
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    lbt.GetTriggersL(trigInfoList,NULL );
    TBool err=EFalse;
    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* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
              RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
   
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
    if(State2 !=CLbtTriggerEntry::EStateEnabled)
    {
    err = ETrue;
    }
    }
    iLog->Log(_L("All checkings done "));    
    //free memory
    for ( TInt i = 0; i < count; i++ )
    {
    delete trigInfoList[i];
    }
    trigInfoList.Close();
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    if(err)
    {
    iLog->Log(_L("State not changed "));    
    return KErrGeneral;
    }
    return KErrNone;    
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggerState2L
// listing triggers using NULL filter synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState2L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
    RLbt lbt;
    
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
     
    TRAP_IGNORE(lbt.DeleteTriggersL());
      //Construct triggers
    CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
    CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig1 );
    CleanupStack::PushL( trig2 );
        
    trig1->SetNameL(_L("Trigger1"));
    trig2->SetNameL(_L("Trigger2"));
    trig1->SetState(CLbtTriggerEntry::EStateDisabled);
    trig2->SetState(CLbtTriggerEntry::EStateEnabled);
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
    Hybridareaarray1.Append(Cellarea1);
    Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
    CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
    
    trig1->SetCondition(condn1);
    trig2->SetCondition(condn2);
    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    TLbtTriggerId trigId1,trigId2;
    notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
    wait->Start( );
    
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
      
    TSecureId secureid;
    trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
    wait->Start( );
    
    notifier->UpdateTriggersState(lbt,CLbtTriggerEntry::EStateDisabled,wait,NULL);
    wait->Start();
    
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    lbt.GetTriggersL(trigInfoList,NULL );
    TBool err=EFalse;
    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* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
              RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
    if(State2 ==CLbtTriggerEntry::EStateEnabled)
    {
    err = ETrue;
    }
    }
    iLog->Log(_L("All checkings done "));    
    //free memory
    for ( TInt i = 0; i < count; i++ )
    {
    delete trigInfoList[i];
    }
    trigInfoList.Close();
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    if(err)
    {
    iLog->Log(_L("State Not changed "));    
    return KErrGeneral;
    }
    return KErrNone;    
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggersState3L
// Settriggersstate  using Area filter synchronously when both the cells are matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState3L(CStifItemParser& /*aItem*/)
    {
    return TC_TestSetTriggersState3L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggersState4L
// settriggersstate  using Area filter asynchronously when both the cells are matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState4L(CStifItemParser& /*aItem*/)
    {
    return TC_TestSetTriggersState4L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggersState5L
// Settriggersstate  using Area filter synchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState5L(CStifItemParser& /*aItem*/)
    {
    return TC_TestSetTriggersState5L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggersState6L
// Settriggersstate  using Area filter asynchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState6L(CStifItemParser& /*aItem*/)
    {
    return TC_TestSetTriggersState6L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggersState7L
// Settriggersstate  using Area filter synchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState7L(CStifItemParser& /*aItem*/)
    {
    return TC_TestSetTriggersState7L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggersState8L
// Settriggersstate  using Area filter asynchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState8L(CStifItemParser& /*aItem*/)
    {
    return TC_TestSetTriggersState8L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggersState9L
// Settriggersstate using composite filter  constructed using Multiple CGI Area synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState9L(CStifItemParser& /*aItem*/)
    {
    return TC_TestSetTriggersState9L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggersState10L
// Settriggersstate using composite filter  constructed using Multiple CGI Area asynchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState10L(CStifItemParser& /*aItem*/)
    {
    return TC_TestSetTriggersState10L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggersState11L
// Settriggersstate using composite filter  constructed using Two Multiple CGI Area filters synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState11L(CStifItemParser& /*aItem*/)
    {
    return TC_TestSetTriggersState11L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggersState12L
// Settriggersstate using composite filter  constructed using Two Multiple CGI Area filters synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggersState12L(CStifItemParser& /*aItem*/)
    {
    return TC_TestSetTriggersState12L();
    }


    
    // -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestSetTriggerState1L
// listing triggers using NULL filter synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestSetTriggerState1L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
    RLbt lbt;
    
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
     
    TRAP_IGNORE(lbt.DeleteTriggersL());
      //Construct triggers
    CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
    CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig1 );
    CleanupStack::PushL( trig2 );
        
    trig1->SetNameL(_L("Trigger1"));
    trig2->SetNameL(_L("Trigger2"));
    trig1->SetState(CLbtTriggerEntry::EStateDisabled);
    trig2->SetState(CLbtTriggerEntry::EStateEnabled);
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
    CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
    
    trig1->SetCondition(condn1);
    trig2->SetCondition(condn2);
    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    TLbtTriggerId trigId1,trigId2;
    notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
    wait->Start( );
    
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
      
    TSecureId secureid;
    trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
    wait->Start( );
        
    lbt.SetTriggerStateL(trigId1,CLbtTriggerEntry::EStateEnabled,ELbtTrue);
    lbt.SetTriggerStateL(trigId2,CLbtTriggerEntry::EStateEnabled,ELbtTrue);
    
    RPointerArray < CLbtTriggerInfo > trigInfoList;
    lbt.GetTriggersL(trigInfoList,NULL );
    TBool err=EFalse;
    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* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
              RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
   
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
    if(State2 !=CLbtTriggerEntry::EStateEnabled)
    {
    err = ETrue;
    }
    }
    iLog->Log(_L("All checkings done "));    
    //free memory
    for ( TInt i = 0; i < count; i++ )
    {
    delete trigInfoList[i];
    }
    trigInfoList.Close();
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    if(err)
    {
    return KErrGeneral;
    }
    return KErrNone;    
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestListtriggerIds5L
// listing triggers using NULL filter synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds1L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
    RLbt lbt;
    
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
     
    TRAP_IGNORE(lbt.DeleteTriggersL());
      //Construct triggers
    CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
    CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig1 );
    CleanupStack::PushL( trig2 );
        
    trig1->SetNameL(_L("Trigger1"));
    trig2->SetNameL(_L("Trigger2"));
    trig1->SetState(CLbtTriggerEntry::EStateDisabled);
    trig2->SetState(CLbtTriggerEntry::EStateEnabled);
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
    CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
    
    trig1->SetCondition(condn1);
    trig2->SetCondition(condn2);
    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    TLbtTriggerId trigId1,trigId2;
    notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
    wait->Start( );
    
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
      
    TSecureId secureid;
    trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
    wait->Start( );
    
    RArray< TLbtTriggerId>  aTriggerIdList;
    lbt.ListTriggerIdsL (aTriggerIdList,NULL);
   
    TInt count = aTriggerIdList.Count();
    TInt Numoftriggersfound =0;
    for ( TInt i = 0; i < count; i++ )
    {
    if(aTriggerIdList[i]==trigId1 ||aTriggerIdList[i]==trigId2 )
        {
        Numoftriggersfound++;
        }
    
    }
    iLog->Log(_L("All checkings done "));    
    //free memory
   
    aTriggerIdList.Close();
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    if(Numoftriggersfound<2)
        return KErrGeneral;
    return KErrNone;    
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGetTriggers2L
// Listing triggers using NULL filter asynchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds2L(CStifItemParser& /*aItem*/)
    {
    RLbtServer lbtserver;
    RLbt lbt;
    
    User::LeaveIfError( lbtserver.Connect() );
    CleanupClosePushL( lbtserver );
    User::LeaveIfError( lbt.Open( lbtserver ) );
    CleanupClosePushL( lbt );
     
    TRAP_IGNORE(lbt.DeleteTriggersL());
      //Construct triggers
    CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
    CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
    
    //Push to cleanup stack
    CleanupStack::PushL( trig1 );
    CleanupStack::PushL( trig2 );
        
    trig1->SetNameL(_L("Trigger1"));
    trig2->SetNameL(_L("Trigger2"));
    trig1->SetState(CLbtTriggerEntry::EStateDisabled);
    trig2->SetState(CLbtTriggerEntry::EStateEnabled);
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
       
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
       
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);

    CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
    CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
    
    trig1->SetCondition(condn1);
    trig2->SetCondition(condn2);
    //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
    trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
    
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    TLbtTriggerId trigId1,trigId2;
    notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
    wait->Start( );
    
    _LIT( KMyTriggerHandlingProcessName, "About.exe");
      
    TSecureId secureid;
    trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
    notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
    wait->Start( );
    
    RArray< TLbtTriggerId>  aTriggerIdList;
    notifier->ListTriggerIdsList(lbt,aTriggerIdList,wait,NULL);
    wait->Start();
   
    TInt count = aTriggerIdList.Count();
    TInt Numoftriggersfound =0;
    for ( TInt i = 0; i < count; i++ )
    {
    if(aTriggerIdList[i]==trigId1 ||aTriggerIdList[i]==trigId2 )
        {
        Numoftriggersfound++;
        }
    
    }
    iLog->Log(_L("All checkings done "));    
    //free memory
    
    aTriggerIdList.Close();
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::Pop( trig2 );
    CleanupStack::PopAndDestroy( trig1 );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
    if(Numoftriggersfound<2)
            return KErrGeneral;
    return KErrNone;       
    
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestListtriggerIds3L
// listing trigger ids  using Area filter synchronously when both the cells are matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds3L(CStifItemParser& /*aItem*/)
    {
    return TC_TestListtriggerIds3L();
    }


// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestListtriggerIds4L
// listing trigger ids  using Area filter asynchronously when both the cells are matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds4L(CStifItemParser& /*aItem*/)
    {
    return TC_TestListtriggerIds4L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestListtriggerIds5L
// listing trigger ids  using Area filter synchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds5L(CStifItemParser& /*aItem*/)
    {
    return TC_TestListtriggerIds5L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestListtriggerIds6L
// listing trigger ids  using Area filter asynchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds6L(CStifItemParser& /*aItem*/)
    {
    return TC_TestListtriggerIds6L();
    }


// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestListtriggerIds7L
// listing trigger ids  using Area filter synchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds7L(CStifItemParser& /*aItem*/)
    {
    return TC_TestListtriggerIds7L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestListtriggerIds8L
// listing trigger ids  using Area filter asynchronously when both the cells are not matching
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds8L(CStifItemParser& /*aItem*/)
    {
    return TC_TestListtriggerIds8L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestListtriggerIds9L
// listing trigger ids using composite filter  constructed using Multiple CGI Area synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds9L(CStifItemParser& /*aItem*/)
    {
    return TC_TestListtriggerIds9L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestListtriggerIds10L
// listing trigger ids using composite filter  constructed using Multiple CGI Area asynchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds10L(CStifItemParser& /*aItem*/)
    {
    return TC_TestListtriggerIds10L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestListtriggerIds11L
// listing trigger ids using composite filter  constructed using Two Multiple CGI Area filters synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds11L(CStifItemParser& /*aItem*/)
    {
    return TC_TestListtriggerIds11L();
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestListtriggerIds12L
// listing trigger ids using composite filter  constructed using Two Multiple CGI Area filters synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers ::TC_TestListtriggerIds12L(CStifItemParser& /*aItem*/)
    {
    return TC_TestListtriggerIds12L();
    }


// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGettriggerLC1L
// Retrieving trigger attributes
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
    //Retrieving informations about a Cellular based startup trigger
TInt CTestHybridTriggers::TC_TestGettriggerLC1L( 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, "TrigHandlingProcess.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    TBuf<4> Networkcountrycode1 = _L("1000");
      TBuf<8> Networkidentitycode1 = _L("10000000");
      TUint Locationareacode1 = 100;
      TUint CellId1 = 100;
          
      CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode1,
                                                          Networkidentitycode1,
                                                          Locationareacode1,
                                                          CellId1
                                                              );
      TBuf<4> Networkcountrycode2 = _L("2000");
      TBuf<8> Networkidentitycode2 = _L("20000000");
      TUint Locationareacode2 = 200;
      TUint CellId2 = 200;
          
      CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode2,
                                                          Networkidentitycode2,
                                                          Locationareacode2,
                                                          CellId2
                                                              );
      RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                        Hybridareaarray1.Append(Cellarea1);
                        Hybridareaarray1.Append(Cellarea2);
      CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of Cellarea object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                Hybridarea,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    
    
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId,trigId2;
     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 );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
    //User::After(5000000);
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    iLog->Log(_L("Before GetTriggerLC "));
    
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    
    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
    
   // CleanupStack::PopAndDestroy( trig );
   
    //Check the name of the trigger
    TDesC Name2 =TrigEntry->Name(); 
    if(TrigEntry->Name()!=trig->Name()) 
    {
        return -99;
    }
    //Check the state of the trigger
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
    if(State2 !=trig->State())
    {
        return -99;
    }
    //Check type of the trigger
    TInt Type2 = TrigEntry ->Type();
    if(Type2 != trig->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* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
              RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));        
    //Check requestors 
    RRequestorStack   aRequestors,aRequestors2 ;
    TrigEntry->GetRequestorsL(aRequestors2);
    trig->GetRequestorsL(aRequestors);
   for(TInt i=0;i<aRequestors.Count();i++)
    {
        CRequestor *requestor = aRequestors[i];
        if(requestor->RequestorType()!=NULL)
        {
            return -99;
        }
        if(requestor->RequestorData()!=KNullDesC)
        {
            return -99;
        }
        else if(requestor->RequestorFormat()!=NULL)
        {
            return -99;
        }
    
    }
    //Check trigger Id
    trigId2 = TrigEntry->Id();
    if(trigId !=trigId2)
    {
        return -99;
    }
    //Check ManagerUI
    TUid Managerui2 = TrigEntry->ManagerUi();
    if(Managerui2!=aManagerUi)
    {
        return -99;
    }
    //Check validity
    TLbtTriggerDynamicInfo::TLbtTriggerValidity validity;
   validity= dyninfo -> iValidity;
   if(validity!=TLbtTriggerDynamicInfo::EValid)
   {
    return -99;
   }
   //Check Activity status
/*  TLbtTriggerDynamicInfo::TLbtTriggerActivityStatus currstatus;
    currstatus = dyninfo -> iActivityStatus;
    if(currstatus!=TLbtTriggerDynamicInfo::EActive)
    {
        return -99;
    }*/
    CleanupStack::PopAndDestroy(1 );//trig info
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // //delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 
      
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestGettriggerLC2L
// Retrieving trigger attributes
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
    //Retrieving informations about a Cellular based startup trigger
TInt CTestHybridTriggers::TC_TestGettriggerLC2L( 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
    TBuf<4> Networkcountrycode1 = _L("1000");
   TBuf<8> Networkidentitycode1 = _L("10000000");
   TUint Locationareacode1 = 100;
   TUint CellId1 = 100;
       
   CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode1,
                                                       Networkidentitycode1,
                                                       Locationareacode1,
                                                       CellId1
                                                           );
   TBuf<4> Networkcountrycode2 = _L("2000");
   TBuf<8> Networkidentitycode2 = _L("20000000");
   TUint Locationareacode2 = 200;
   TUint CellId2 = 200;
       
   CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                       Networkcountrycode2,
                                                       Networkidentitycode2,
                                                       Locationareacode2,
                                                       CellId2
                                                           );
   RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                     Hybridareaarray1.Append(Cellarea1);
                     Hybridareaarray1.Append(Cellarea2);
   CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of Cellarea object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                Hybridarea,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
    
    
    trig->SetCondition(condition); // ownership transferred to object

    TLbtTriggerId trigId,trigId2;
     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 );
    CleanupStack::PushL( notifier );
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
        
    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
    wait->Start( );
    //User::After(5000000);
    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
    iLog->Log(_L("Before GetTriggerLC "));
    
    Triginfo = lbt.GetTriggerLC(trigId);
    iLog->Log(_L("After GetTriggerLC "));
    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
    
    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
    
   // CleanupStack::PopAndDestroy( trig );
   
    //Check the name of the trigger
    TDesC Name2 =TrigEntry->Name(); 
    if(TrigEntry->Name()!=trig->Name()) 
    {
        return -99;
    }
    //Check the state of the trigger
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
    if(State2 !=trig->State())
    {
        return -99;
    }
    //Check type of the trigger
    TInt Type2 = TrigEntry ->Type();
    if(Type2 != trig->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* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
              RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));        
    //Check requestors 
    RRequestorStack   aRequestors,aRequestors2 ;
    TrigEntry->GetRequestorsL(aRequestors2);
    trig->GetRequestorsL(aRequestors);
    for(TInt i=0;i<aRequestors.Count();i++)
    {
        CRequestor *requestor = aRequestors[i];
        if(requestor->RequestorType()!=NULL)
        {
            return -99;
        }
        if(requestor->RequestorData()!=KNullDesC)
        {
            return -99;
        }
        else if(requestor->RequestorFormat()!=NULL)
        {
            return -99;
        }
    
    }
    //Check trigger Id
    trigId2 = TrigEntry->Id();
    if(trigId !=trigId2)
    {
        return -99;
    }
    //Check ManagerUI
    TUid Managerui2 = TrigEntry->ManagerUi();
    if(Managerui2!=aManagerUi)
    {
        return -99;
    }
    //Check validity
    TLbtTriggerDynamicInfo::TLbtTriggerValidity validity;
   validity= dyninfo -> iValidity;
   if(validity!=TLbtTriggerDynamicInfo::EValid)
   {
    return -99;
   }
   //Check Activity status
/*  TLbtTriggerDynamicInfo::TLbtTriggerActivityStatus currstatus;
    currstatus = dyninfo -> iActivityStatus;
    if(currstatus!=TLbtTriggerDynamicInfo::EActive)
    {
        return -99;
    }*/
    CleanupStack::PopAndDestroy(1 );//trig info
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( &lbt );
    CleanupStack::PopAndDestroy( &lbtserver );
   // //delete wait;
    iLog->Log(_L("Test passed "));
    return KErrNone; 
      
    }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestUpdateTrigger1L
// Updating attributes of a Cellular based startup trigger synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestUpdateTrigger1L( 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, "LbtReference.exe" );
  
   TSecureId secureid;
   trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
     
  // set condition
   TBuf<4> Networkcountrycode1 = _L("1000");
     TBuf<8> Networkidentitycode1 = _L("10000000");
     TUint Locationareacode1 = 100;
     TUint CellId1 = 100;
         
     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                         Networkcountrycode1,
                                                         Networkidentitycode1,
                                                         Locationareacode1,
                                                         CellId1
                                                             );
     TBuf<4> Networkcountrycode2 = _L("2000");
     TBuf<8> Networkidentitycode2 = _L("20000000");
     TUint Locationareacode2 = 200;
     TUint CellId2 = 200;
         
     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                         Networkcountrycode2,
                                                         Networkidentitycode2,
                                                         Locationareacode2,
                                                         CellId2
                                                             );
     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                       Hybridareaarray1.Append(Cellarea1);
                       Hybridareaarray1.Append(Cellarea2);
     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
  
   TUid aManagerUi = TUid::Uid(0x87654321);     
   // ownership of Cellarea object transferred to the condition object
   CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                               Hybridarea,
                                              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);   
      
   CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt );
   CleanupStack::PushL( notifier );
  
   CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
   TLbtTriggerId trigId,trigId2;   
   notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
   wait->Start( );
  
   //**************New Trigger Entry**************/ 
   CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
   newtrig->SetNameL(_L("TriggerTest"));
   newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
   TBuf<4> Networkcountrycode3 = _L("3000");
    TBuf<8> Networkidentitycode3 = _L("30000000");
    TUint Locationareacode3 = 300;
    TUint CellId3 = 300;
        
    CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode3,
                                                        Networkidentitycode3,
                                                        Locationareacode3,
                                                        CellId3
                                                            );
    TBuf<4> Networkcountrycode4 = _L("4000");
    TBuf<8> Networkidentitycode4 = _L("40000000");
    TUint Locationareacode4 = 400;
    TUint CellId4 = 400;
        
    CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode4,
                                                        Networkidentitycode4,
                                                        Locationareacode4,
                                                        CellId4
                                                            );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2 ;
                           Hybridareaarray2.Append(Cellarea3);
                           Hybridareaarray2.Append(Cellarea4);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray2);
   // ownership of Cellarea object transferred to the condition object
   CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                               Hybridarea2,
                                              CLbtTriggerConditionArea::EFireOnEnter);
      
      
   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,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());

   CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
        AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
        CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
                 RPointerArray<CLbtGeoAreaBase> Hybridareaarray3= area->HybridArea(); 
       CLbtGeoAreaBase* base=Hybridareaarray3[0];
               
       CLbtGeoCell* cell2=NULL;
       if(base->Type()==CLbtGeoAreaBase::ECellular)
       {
           cell2= static_cast<CLbtGeoCell*> (base);
       }    
       
       AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
       AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
       AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
       AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
       
       base=Hybridareaarray3[1];
               
       cell2=NULL;
       if(base->Type()==CLbtGeoAreaBase::ECellular)
       {
           cell2= static_cast<CLbtGeoCell*> (base);
       }    
       
       AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
       AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
       AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
       AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));        
  //}
  //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; 
    
  }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestUpdateTrigger2L
// Updating attributes of a Cellular based session trigger synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestUpdateTrigger2L( 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
     CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
     CleanupStack::PushL( trig );
    
    // Set Name
     trig->SetNameL(_L("Trigger1"));
    
    // set condition
     TBuf<4> Networkcountrycode1 = _L("1000");
       TBuf<8> Networkidentitycode1 = _L("10000000");
       TUint Locationareacode1 = 100;
       TUint CellId1 = 100;
           
       CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                           Networkcountrycode1,
                                                           Networkidentitycode1,
                                                           Locationareacode1,
                                                           CellId1
                                                               );
       TBuf<4> Networkcountrycode2 = _L("2000");
       TBuf<8> Networkidentitycode2 = _L("20000000");
       TUint Locationareacode2 = 200;
       TUint CellId2 = 200;
           
       CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                           Networkcountrycode2,
                                                           Networkidentitycode2,
                                                           Locationareacode2,
                                                           CellId2
                                                               );
       RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                         Hybridareaarray1.Append(Cellarea1);
                         Hybridareaarray1.Append(Cellarea2);
       CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
     TUid aManagerUi = TUid::Uid(0x87654321);     
     // ownership of Cellarea object transferred to the condition object
     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                 Hybridarea,
                                                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);   
        
     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt );
     CleanupStack::PushL( notifier );
    
     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
     TLbtTriggerId trigId,trigId2;   
     notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
     wait->Start( );
    
     //**************New Trigger Entry**************/ 
     CLbtSessionTrigger* newtrig = CLbtSessionTrigger::NewL();
     newtrig->SetNameL(_L("TriggerTest"));
     newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
     TBuf<4> Networkcountrycode3 = _L("3000");
      TBuf<8> Networkidentitycode3 = _L("30000000");
      TUint Locationareacode3 = 300;
      TUint CellId3 = 300;
          
      CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode3,
                                                          Networkidentitycode3,
                                                          Locationareacode3,
                                                          CellId3
                                                              );
      TBuf<4> Networkcountrycode4 = _L("4000");
      TBuf<8> Networkidentitycode4 = _L("40000000");
      TUint Locationareacode4 = 400;
      TUint CellId4 = 400;
          
      CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode4,
                                                          Networkidentitycode4,
                                                          Locationareacode4,
                                                          CellId4
                                                              );
      RPointerArray<CLbtGeoAreaBase> Hybridareaarray2 ;
                               Hybridareaarray2.Append(Cellarea3);
                               Hybridareaarray2.Append(Cellarea4);
      CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray2);
     // ownership of Cellarea object transferred to the condition object
     CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                 Hybridarea2,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
        
     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,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());
    
     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
               RPointerArray<CLbtGeoAreaBase> Hybridareaarray3= area->HybridArea();
     CLbtGeoAreaBase* base=Hybridareaarray3[0];
             
     CLbtGeoCell* cell2=NULL;
     if(base->Type()==CLbtGeoAreaBase::ECellular)
     {
         cell2= static_cast<CLbtGeoCell*> (base);
     }    
     
     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
     AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
     AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
     
     base=Hybridareaarray3[1];
             
     cell2=NULL;
     if(base->Type()==CLbtGeoAreaBase::ECellular)
     {
         cell2= static_cast<CLbtGeoCell*> (base);
     }    
     
     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
     AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
     AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));        
    //}
    //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; 
      
    
  }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestUpdateTrigger3L
// Updating attributes of a Cellular based startup trigger asynchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestUpdateTrigger3L( 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, "LbtReference.exe" );
    
     TSecureId secureid;
     trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
     TBuf<4> Networkcountrycode1 = _L("1000");
       TBuf<8> Networkidentitycode1 = _L("10000000");
       TUint Locationareacode1 = 100;
       TUint CellId1 = 100;
           
       CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                           Networkcountrycode1,
                                                           Networkidentitycode1,
                                                           Locationareacode1,
                                                           CellId1
                                                               );
       TBuf<4> Networkcountrycode2 = _L("2000");
       TBuf<8> Networkidentitycode2 = _L("20000000");
       TUint Locationareacode2 = 200;
       TUint CellId2 = 200;
           
       CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                           Networkcountrycode2,
                                                           Networkidentitycode2,
                                                           Locationareacode2,
                                                           CellId2
                                                               );
       RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       Hybridareaarray1.Append(Cellarea1);
       Hybridareaarray1.Append(Cellarea2);
       CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
     TUid aManagerUi = TUid::Uid(0x87654321);     
     // ownership of Cellarea object transferred to the condition object
     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                 Hybridarea,
                                                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);   
        
     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt );
     CleanupStack::PushL( notifier );
    
     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
     TLbtTriggerId trigId,trigId2;   
     notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
     wait->Start( );
    
     //**************New Trigger Entry**************/ 
     CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
     newtrig->SetNameL(_L("TriggerTest"));
     newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
     TBuf<4> Networkcountrycode3 = _L("3000");
      TBuf<8> Networkidentitycode3 = _L("30000000");
      TUint Locationareacode3 = 300;
      TUint CellId3 = 300;
          
      CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode3,
                                                          Networkidentitycode3,
                                                          Locationareacode3,
                                                          CellId3
                                                              );
      TBuf<4> Networkcountrycode4 = _L("4000");
      TBuf<8> Networkidentitycode4 = _L("40000000");
      TUint Locationareacode4 = 400;
      TUint CellId4 = 400;
          
      CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode4,
                                                          Networkidentitycode4,
                                                          Locationareacode4,
                                                          CellId4
                                                              );
      RPointerArray<CLbtGeoAreaBase> Hybridareaarray2 ;
                               Hybridareaarray2.Append(Cellarea3);
                               Hybridareaarray2.Append(Cellarea4);
      CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray2);
     // ownership of Cellarea object transferred to the condition object
     CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                 Hybridarea2,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
        
     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 ,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());

     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
               RPointerArray<CLbtGeoAreaBase> Hybridareaarray3= area->HybridArea();
     CLbtGeoAreaBase* base=Hybridareaarray3[0];
             
     CLbtGeoCell* cell2=NULL;
     if(base->Type()==CLbtGeoAreaBase::ECellular)
     {
         cell2= static_cast<CLbtGeoCell*> (base);
     }    
     
     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
     AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
     AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
     
     base=Hybridareaarray3[1];
             
     cell2=NULL;
     if(base->Type()==CLbtGeoAreaBase::ECellular)
     {
         cell2= static_cast<CLbtGeoCell*> (base);
     }    
     
     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
     AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
     AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));        
    //}
    //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; 
    
  }

// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestUpdateTrigger4L
// Updating attributes of a Cellular based startup trigger synchronously
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CTestHybridTriggers::TC_TestUpdateTrigger4L( 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
   CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
  
  //Push to cleanup stack
   CleanupStack::PushL( trig );
  
  // Set Name
   trig->SetNameL(_L("Trigger1"));
  
  // set condition
   TBuf<4> Networkcountrycode1 = _L("1000");
     TBuf<8> Networkidentitycode1 = _L("10000000");
     TUint Locationareacode1 = 100;
     TUint CellId1 = 100;
         
     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                         Networkcountrycode1,
                                                         Networkidentitycode1,
                                                         Locationareacode1,
                                                         CellId1
                                                             );
     TBuf<4> Networkcountrycode2 = _L("2000");
     TBuf<8> Networkidentitycode2 = _L("20000000");
     TUint Locationareacode2 = 200;
     TUint CellId2 = 200;
         
     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                         Networkcountrycode2,
                                                         Networkidentitycode2,
                                                         Locationareacode2,
                                                         CellId2
                                                             );
     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                       Hybridareaarray1.Append(Cellarea1);
                       Hybridareaarray1.Append(Cellarea2);
     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
  
   TUid aManagerUi = TUid::Uid(0x87654321);     
   // ownership of Cellarea object transferred to the condition object
   CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                               Hybridarea,
                                              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);   
      
   CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt );
   CleanupStack::PushL( notifier );
  
   CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
   TLbtTriggerId trigId,trigId2;   
   notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
   wait->Start( );
  
   //**************New Trigger Entry**************/ 
   CLbtSessionTrigger* newtrig = CLbtSessionTrigger::NewL();
   newtrig->SetNameL(_L("TriggerTest"));
   newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
   TBuf<4> Networkcountrycode3 = _L("3000");
    TBuf<8> Networkidentitycode3 = _L("30000000");
    TUint Locationareacode3 = 300;
    TUint CellId3 = 300;
        
    CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode3,
                                                        Networkidentitycode3,
                                                        Locationareacode3,
                                                        CellId3
                                                            );
    TBuf<4> Networkcountrycode4 = _L("4000");
    TBuf<8> Networkidentitycode4 = _L("40000000");
    TUint Locationareacode4 = 400;
    TUint CellId4 = 400;
        
    CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                        Networkcountrycode4,
                                                        Networkidentitycode4,
                                                        Locationareacode4,
                                                        CellId4
                                                            );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2 ;
                           Hybridareaarray2.Append(Cellarea3);
                           Hybridareaarray2.Append(Cellarea4);
    CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray2);
   // ownership of Cellarea object transferred to the condition object
   CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                               Hybridarea2,
                                              CLbtTriggerConditionArea::EFireOnEnter);
      
      
   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 ,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());
  
   CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
    AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
    CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
             RPointerArray<CLbtGeoAreaBase> Hybridareaarray3= area->HybridArea();
   CLbtGeoAreaBase* base=Hybridareaarray3[0];
           
   CLbtGeoCell* cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
   
   base=Hybridareaarray3[1];
           
   cell2=NULL;
   if(base->Type()==CLbtGeoAreaBase::ECellular)
   {
       cell2= static_cast<CLbtGeoCell*> (base);
   }    
   
   AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
   AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
   AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
   AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
   AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));        
  //}
  //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; 
    
  }
// -----------------------------------------------------------------------------
// CTestHybridTriggers::TC_TestUpdateTrigger5L
// Updating Hybrid startup trigger to a coordinate based startup trigger.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
 
    TInt CTestHybridTriggers::TC_TestUpdateTrigger5L( 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, "LbtReference.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
          
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode1,
                                                          Networkidentitycode1,
                                                          Locationareacode1,
                                                          CellId1
                                                              );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
          
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode2,
                                                          Networkidentitycode2,
                                                          Locationareacode2,
                                                          CellId2
                                                              );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    TUid aManagerUi = TUid::Uid(0x87654321);     
    // ownership of Cellarea object transferred to the condition object
    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                Hybridarea,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
       
    trig->SetCondition(condition); // ownership transferred to object

    
    trig->SetManagerUi(aManagerUi);   
     //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig->SetRequestorL(ReqType,ReqFormat,ReqData);      
    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(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
//  trigId = 1;
    newtrig->SetId(trigId);
   
    /***************************End*******************/
    iLog->Log(_L("Before UpdateTriggerL "));
    lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
    |CLbtTriggerEntry::EAttributeState
    |CLbtTriggerEntry::EAttributeCondition,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()) 
    {
        iLog->Log(_L("wrong name "));
        return -99;
    }
    //Check the state of the trigger
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
    if(State2 !=newtrig->State())
    {
        iLog->Log(_L("wrong state "));
        return -99;
    }
    //Check type of the trigger
    TInt Type2 = TrigEntry ->Type();
    if(Type2 != newtrig->Type())
    {
        iLog->Log(_L("wrong 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)
    {
        iLog->Log(_L("wrong Direction "));
        return -99;
    }
    CLbtGeoAreaBase* area = Condition2->TriggerArea();
    if(area ->Type()!=CLbtGeoAreaBase::ECircle )
    {
    CleanupStack::PopAndDestroy( 1 );//Triginfo
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
   
    CleanupStack::Pop( &lbt );
    lbt.Close();
    
    CleanupStack::PopAndDestroy( &lbtserver );
    iLog->Log(_L("wrong area type "));
        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)
    {
        iLog->Log(_L("wrong center "));
        return -99;
    }
    TReal radius = circle2->Radius();
    if(radius != newcircle->Radius())
    {
        iLog->Log(_L("wrong radius "));
        return -99;
    }
    
    

    //Check trigger Id
    trigId2 = TrigEntry->Id();
    if(trigId !=trigId2)
    {
        iLog->Log(_L("wrong trigger id "));
        return -99;
    }
    
    CleanupStack::PopAndDestroy( 1 );//Triginfo
    CleanupStack::PopAndDestroy( notifier );
    CleanupStack::PopAndDestroy( trig );
   
    CleanupStack::Pop( &lbt );
    lbt.Close();
    
    CleanupStack::PopAndDestroy( &lbtserver );
   
   
    iLog->Log(_L("Test passed "));
    return KErrNone; 
      
    }
    
    // -----------------------------------------------------------------------------
    // CTestHybridTriggers::TC_TestUpdateTrigger4L
    // Updating coordinate based to a Wlan based startup trigger
    // (other items were commented in a header).
    // -----------------------------------------------------------------------------
     //
    
      TInt CTestHybridTriggers::TC_TestUpdateTrigger6L( 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 "));
    
    TBuf<4> Networkcountrycode = _L("404");
    TBuf<8> Networkidentitycode = _L("45");
//    TUint Locationareacode = 1627;
 //   TUint CellId = 40331;
 
 //   #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, "LbtReference.exe" );
    
    TSecureId secureid;
    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
    // set condition
    
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
    CleanupStack::PushL( notifier );
    
    // 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

    
    TUid aManagerUi = TUid::Uid(0x87654321);   
    trig->SetManagerUi(aManagerUi);   
     //set Requestor     
    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
    TBuf<KLbtMaxNameLength> ReqData=_L("");
    trig->SetRequestorL(ReqType,ReqFormat,ReqData);      
    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);
    // CLbtGeoCell* Cellarea = NULL; 
   /* CLbtGeoAreaBase * base = NULL;//static_cast<CLbtGeoAreaBase*>(Cellarea);
    CLBTOperation *LBTOperation = notifier->CreateGeoAreaForCurrentLocationL(CLbtGeoAreaBase::ECellular, 
                                                                             &base,
                                                                             wait);
    wait->Start( );
    delete LBTOperation;
    
      
    // ownership of Cellarea object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                base,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
       
    newtrig->SetCondition(newcondition); // ownership transferred to object
*/
    TBuf<4> Networkcountrycode1 = _L("1000");
    TBuf<8> Networkidentitycode1 = _L("10000000");
    TUint Locationareacode1 = 100;
    TUint CellId1 = 100;
          
    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode1,
                                                          Networkidentitycode1,
                                                          Locationareacode1,
                                                          CellId1
                                                              );
    TBuf<4> Networkcountrycode2 = _L("2000");
    TBuf<8> Networkidentitycode2 = _L("20000000");
    TUint Locationareacode2 = 200;
    TUint CellId2 = 200;
          
    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                                                          Networkcountrycode2,
                                                          Networkidentitycode2,
                                                          Locationareacode2,
                                                          CellId2
                                                              );
    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                      Hybridareaarray1.Append(Cellarea1);
                      Hybridareaarray1.Append(Cellarea2);
    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    // ownership of Cellarea object transferred to the condition object
    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
                                                Hybridarea,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
        
    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,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;
    }
    iLog->Log(_L("Name OK "));
    //Check the state of the trigger
    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
    if(State2 !=newtrig->State())
    {
        return -99;
    }
     iLog->Log(_L("State OK "));
    //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());
    iLog->Log(_L("condition OK "));
    CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
              RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
    
    base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }    
    
    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));        
    //}
    //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; 
      
    }
      
  // -----------------------------------------------------------------------------
  // CTestHybridTriggers::TC_TestHybridTriggerFiring1L
  // Creation of hybrid Entry type startup trigger
  // (other items were commented in a header).
  // -----------------------------------------------------------------------------
  //
  TInt CTestHybridTriggers ::TC_TestHybridTriggerFiring1L(CStifItemParser& /*aItem*/)
      {
       RLbtServer lbtserver;
       RLbt lbt;
       iLog->Log(_L("Before connecting"));
       User::LeaveIfError( lbtserver.Connect() );
       CleanupClosePushL( lbtserver );
       iLog->Log(_L("Connection to RLbtServer Passed "));
       User::LeaveIfError( lbt.Open(lbtserver));
       iLog->Log(_L("Subsession opened "));
       CleanupClosePushL( lbt );
   
        //Construct a startup trigger
       CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
      
      //Push to cleanup stack
       CleanupStack::PushL( trig );
       iLog->Log(_L("Startup Trigger Entry Created "));
      
      // Set Name
       trig->SetNameL(_L("Trigger1"));
     
       _LIT( KMyTriggerHandlingProcessName, "About.exe");
    
      
       TSecureId secureid;
       trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
         
       //set Requestor     
       CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       TBuf<KLbtMaxNameLength> ReqData=_L("");
       trig->SetRequestorL(ReqType,ReqFormat,ReqData);
      // set condition
       CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       RFileLogger aLog;
       CLbtAppCgiRequestor* CGIRequest=CLbtAppCgiRequestor::NewL(aLog);
       CleanupStack::PushL( CGIRequest );  
       CGIRequest->Start(wait);
       wait->Start( );
       iLog->Log(_L("First CGI Info received"));
       CTelephony::TNetworkInfoV1Pckg currcgi1=CGIRequest->CurrentCGI();
      

       //CLbtGeoCell* Cellarea2;
       CTelephony::TNetworkMode Networkmode = currcgi1().iMode;
       TUint cellid1=currcgi1().iCellId;
       CLbtGeoCell*  Cellarea1=NULL;  
       RFileLogger::WriteFormat(KLbtTraceDir, KLbtTraceFile, EFileLoggingModeAppend,_L( "Current Cell Id= %d"),cellid1);
       if(Networkmode ==CTelephony::ENetworkModeGsm)
       {
       Cellarea1= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
               currcgi1().iCountryCode,
               currcgi1().iNetworkId,
               currcgi1().iLocationAreaCode,
               currcgi1().iCellId
                                     );  
       }
       /*
       //wait for CID change notification
        CLbtEventObserver* notifier2= CLbtEventObserver::NewL( lbt);
        CleanupStack::PushL( notifier2 );
        CActiveSchedulerWait* wait2=new(ELeave)CActiveSchedulerWait;
        notifier2->StartCidNotification(wait2);
        iLog->Log(_L("Cell id change notification requested"));
        wait2->Start();
        iLog->Log(_L("Cell id change Notification received"));
        //CID changed
        CleanupStack::PopAndDestroy( notifier2 );
       CGIRequest->Start(wait);
       wait->Start( );
       iLog->Log(_L("Second CGI Received"));
       CTelephony::TNetworkInfoV1Pckg currcgi2 = CGIRequest->CurrentCGI();
       Networkmode = currcgi2().iMode;
       TUint cellid2=currcgi2().iCellId;
       CLbtGeoCell* Cellarea2;
       if(Networkmode ==CTelephony::ENetworkModeGsm)
          {
          Cellarea2= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                  currcgi2().iCountryCode,
                  currcgi2().iNetworkId,
                  currcgi2().iLocationAreaCode,
                  currcgi2().iCellId
                                        );  
          }*/
       
       CLbtGeoCell* Cellarea2=NULL;
       TUint CellId1 = 100;
          if(Networkmode ==CTelephony::ENetworkModeGsm)
             {
             Cellarea2= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                     currcgi1().iCountryCode,
                     currcgi1().iNetworkId,
                     currcgi1().iLocationAreaCode,
                     CellId1
                                           );  
             }
       RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                             Hybridareaarray1.Append(Cellarea1);
                             Hybridareaarray1.Append(Cellarea2);
         CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
      
      
      // ownership of Cellarea object transferred to the condition object
       CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                   Hybridarea,
                                                  CLbtTriggerConditionArea::EFireOnEnter);
          
       trig->SetCondition(condition); // ownership transferred to object
      iLog->Log(_L("Trigger condition created"));
       TLbtTriggerId trigId;
          
          
       CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       CleanupStack::PushL( notifier );
      
                 
       notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
       wait->Start( );
       iLog->Log(_L("Trigger Created"));
       notifier->StartNotification( wait );
       wait->Start( );
       iLog->Log(_L("Trigger Fired"));
       
       TLbtTriggerFireInfo FireInfo;
//       TReal32 trigDistance;
       TPosition firePosition;
       FireInfo = notifier->GetFiredTrigger();
        
       CLbtTriggerInfo *Triginfo ;
       iLog->Log(_L("Before GetTriggerLC "));
      
       Triginfo= lbt.GetTriggerLC(FireInfo.iTriggerId);
       
       CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
                     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
      
      //CLbtGeoAreaBase* base=Hybridareaarray2[0];
              
      /*CLbtGeoCell* cell2=NULL;
      if(base->Type()==CLbtGeoAreaBase::ECellular)
      {
          cell2= static_cast<CLbtGeoCell*> (base);
      }    */
      
      /*AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
      AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
      AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
      AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
      AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));   */   
      
     /* base=Hybridareaarray2[1];
              
      cell2=NULL;
      if(base->Type()==CLbtGeoAreaBase::ECellular)
      {
          cell2= static_cast<CLbtGeoCell*> (base);
      }  */  
      
     /* AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
      AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
      AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
      AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
      AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));     */      
       CleanupStack::Pop(Triginfo);
       //CleanupStack::PopAndDestroy( notifier2 );
       CleanupStack::PopAndDestroy( notifier );
       CleanupStack::PopAndDestroy( CGIRequest );
       CleanupStack::PopAndDestroy( trig );
       CleanupStack::Pop( &lbt );
       CleanupStack::PopAndDestroy( &lbtserver );
      //delete wait;
       return KErrNone;
      
      }

  // -----------------------------------------------------------------------------
  // CTestHybridTriggers::TC_TestCreatetrigger2L
  // Creation of hybrid Entry type session trigger
  // (other items were commented in a header).
  // -----------------------------------------------------------------------------
  //
  TInt CTestHybridTriggers ::TC_TestHybridTriggerFiring2L(CStifItemParser& /*aItem*/)
      {
      RLbtServer lbtserver;
     RLbt lbt;
     iLog->Log(_L("Before connecting"));
     User::LeaveIfError( lbtserver.Connect() );
     CleanupClosePushL( lbtserver );
     iLog->Log(_L("Connection to RLbtServer Passed "));
     User::LeaveIfError( lbt.Open(lbtserver));
     iLog->Log(_L("Subsession opened "));
     CleanupClosePushL( lbt );
 
      //Construct a startup trigger
     CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
    
    //Push to cleanup stack
     CleanupStack::PushL( trig );
     iLog->Log(_L("Startup Trigger Entry Created "));
    
    // Set Name
     trig->SetNameL(_L("Trigger1"));
   
    
     //set Requestor     
     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
     TBuf<KLbtMaxNameLength> ReqData=_L("");
     trig->SetRequestorL(ReqType,ReqFormat,ReqData);
    // set condition
     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
     RFileLogger aLog;
     CLbtAppCgiRequestor* CGIRequest=CLbtAppCgiRequestor::NewL(aLog);
     CleanupStack::PushL( CGIRequest );  
     CGIRequest->Start(wait);
     wait->Start( );
     CTelephony::TNetworkInfoV1Pckg currcgi1=CGIRequest->CurrentCGI();
    

     //CLbtGeoCell* Cellarea2;
     CTelephony::TNetworkMode Networkmode = currcgi1().iMode;
     TUint cellid1=currcgi1().iCellId;
     RFileLogger::WriteFormat(KLbtTraceDir, KLbtTraceFile, EFileLoggingModeAppend,_L( "Current Cell Id= %d"),cellid1);
     CLbtGeoCell*  Cellarea1=NULL;                                              
     if(Networkmode ==CTelephony::ENetworkModeGsm)
     {
     Cellarea1= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
             currcgi1().iCountryCode,
             currcgi1().iNetworkId,
             currcgi1().iLocationAreaCode,
             currcgi1().iCellId
                                   );  
     }
     /*
     //wait for CID change notification
      CLbtEventObserver* notifier2= CLbtEventObserver::NewL( lbt);
      CleanupStack::PushL( notifier2 );
       
      notifier2->StartCidNotification(wait);
      iLog->Log(_L("Cell id change notification requested"));
      wait->Start();
      //CID changed
      CleanupStack::PopAndDestroy( notifier2 );
     CGIRequest->Start(wait);
     wait->Start( );
     CTelephony::TNetworkInfoV1Pckg currcgi2 = CGIRequest->CurrentCGI();
     Networkmode = currcgi2().iMode;
     TUint cellid2=currcgi2().iCellId;
     CLbtGeoCell* Cellarea2;
     if(Networkmode ==CTelephony::ENetworkModeGsm)
        {
        Cellarea2= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                currcgi2().iCountryCode,
                currcgi2().iNetworkId,
                currcgi2().iLocationAreaCode,
                currcgi2().iCellId
                                      );  
        }*/
     CLbtGeoCell* Cellarea2=NULL;
    TUint CellId1 = 100;
       if(Networkmode ==CTelephony::ENetworkModeGsm)
          {
          Cellarea2= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
                  currcgi1().iCountryCode,
                  currcgi1().iNetworkId,
                  currcgi1().iLocationAreaCode,
                  CellId1
                                        );  
          }
     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
                           Hybridareaarray1.Append(Cellarea1);
                           Hybridareaarray1.Append(Cellarea2);
       CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
    
    
    // ownership of Cellarea object transferred to the condition object
     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
                                                 Hybridarea,
                                                CLbtTriggerConditionArea::EFireOnEnter);
        
     trig->SetCondition(condition); // ownership transferred to object
    
     TLbtTriggerId trigId;
        
        
     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
     CleanupStack::PushL( notifier );
    
               
     notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
     wait->Start( );
     iLog->Log(_L("Trigger Created"));
     notifier->StartNotification( wait );
     wait->Start( );
     iLog->Log(_L("Trigger Fired"));
     
     TLbtTriggerFireInfo FireInfo;
    // TReal32 trigDistance;
     TPosition firePosition;
     FireInfo = notifier->GetFiredTrigger();
      
     CLbtTriggerInfo *Triginfo ;
     iLog->Log(_L("Before GetTriggerLC "));
    
     Triginfo= lbt.GetTriggerLC(FireInfo.iTriggerId);
     
     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
                   RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
    
    /*CLbtGeoAreaBase* base=Hybridareaarray2[0];
            
    CLbtGeoCell* cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }   */ 
    
    /*AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));   */   
    
   /* base=Hybridareaarray2[1];
            
    cell2=NULL;
    if(base->Type()==CLbtGeoAreaBase::ECellular)
    {
        cell2= static_cast<CLbtGeoCell*> (base);
    }   */ 
    
   /* AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));     */      
     CleanupStack::Pop(Triginfo);
     //CleanupStack::PopAndDestroy( notifier2 );
     CleanupStack::PopAndDestroy( notifier );
     CleanupStack::PopAndDestroy( CGIRequest );
     CleanupStack::PopAndDestroy( trig );
     CleanupStack::Pop( &lbt );
     CleanupStack::PopAndDestroy( &lbtserver );
    //delete wait;
     return KErrNone;
     
      }
      
    TInt CTestHybridTriggers::StartCellChangeNotifierL( CStifItemParser& /* aItem */ )
    {
   	RLbtServer lbtserver;
    RLbt lbt;
	 iLog->Log(_L("Before connecting"));
	 User::LeaveIfError( lbtserver.Connect() );
	 CleanupClosePushL( lbtserver );
	 iLog->Log(_L("Connection to RLbtServer Passed "));
	 User::LeaveIfError( lbt.Open(lbtserver));
	 CleanupClosePushL( lbt );
    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
 	
 	CLbtEventObserver* notifier= CLbtEventObserver::NewL( lbt);
	CleanupStack::PushL( notifier );
  
    notifier->StartCidNotification(wait);
    iLog->Log(_L("Cell id change notification requested"));
    wait->Start();
    CleanupStack::PopAndDestroy( notifier );
		
	CleanupStack::PopAndDestroy( &lbt );
	CleanupStack::PopAndDestroy( &lbtserver );
    return KErrNone;
    }  



// -----------------------------------------------------------------------------
// CTestHybridTriggers::?member_function
// ?implementation_description
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
/*
TInt CTestHybridTriggers::?member_function(
   CItemParser& aItem )
   {

   ?code

   }
*/

// ========================== OTHER EXPORTED FUNCTIONS =========================
// None

//  [End of File] - Do not remove