locationtriggering/tsrc/lbtengine_test/TestHybridTriggers/src/TestHybridTriggersBlocks.cpp
changeset 0 667063e416a2
child 37 e175e2ba2fb0
equal deleted inserted replaced
-1:000000000000 0:667063e416a2
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 * 
       
    14 * Description:    This file contains testclass implementation.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 // [INCLUDE FILES] - do not remove
       
    22 #include <e32svr.h>
       
    23 #include <StifParser.h>
       
    24 #include <Stiftestinterface.h>
       
    25 #include "TestHybridTriggers.h"
       
    26 
       
    27 
       
    28 
       
    29 // EXTERNAL DATA STRUCTURES
       
    30 //extern  ?external_data;
       
    31 
       
    32 // EXTERNAL FUNCTION PROTOTYPES  
       
    33 //extern ?external_function( ?arg_type,?arg_type );
       
    34 
       
    35 // CONSTANTS
       
    36 //const ?type ?constant_var = ?constant;
       
    37 
       
    38 // MACROS
       
    39 //#define ?macro ?macro_def
       
    40 
       
    41 // LOCAL CONSTANTS AND MACROS
       
    42 //const ?type ?constant_var = ?constant;
       
    43 //#define ?macro_name ?macro_def
       
    44 
       
    45 // MODULE DATA STRUCTURES
       
    46 //enum ?declaration
       
    47 //typedef ?declaration
       
    48 
       
    49 // LOCAL FUNCTION PROTOTYPES
       
    50 //?type ?function_name( ?arg_type, ?arg_type );
       
    51 
       
    52 // FORWARD DECLARATIONS
       
    53 //class ?FORWARD_CLASSNAME;
       
    54 
       
    55 // ============================= LOCAL FUNCTIONS ===============================
       
    56 
       
    57 // -----------------------------------------------------------------------------
       
    58 // ?function_name ?description.
       
    59 // ?description
       
    60 // Returns: ?value_1: ?description
       
    61 //          ?value_n: ?description_line1
       
    62 //                    ?description_line2
       
    63 // -----------------------------------------------------------------------------
       
    64 //
       
    65 /*
       
    66 ?type ?function_name(
       
    67     ?arg_type arg,  // ?description
       
    68     ?arg_type arg)  // ?description
       
    69     {
       
    70 
       
    71     ?code  // ?comment
       
    72 
       
    73     // ?comment
       
    74     ?code
       
    75     }
       
    76 */
       
    77 
       
    78 // ============================ MEMBER FUNCTIONS ===============================
       
    79 
       
    80 // -----------------------------------------------------------------------------
       
    81 // CTestHybridTriggers::Delete
       
    82 // Delete here all resources allocated and opened from test methods. 
       
    83 // Called from destructor. 
       
    84 // -----------------------------------------------------------------------------
       
    85 //
       
    86 void CTestHybridTriggers::Delete() 
       
    87     {
       
    88 
       
    89     }
       
    90 
       
    91 // -----------------------------------------------------------------------------
       
    92 // CTestHybridTriggers::RunMethodL
       
    93 // Run specified method. Contains also table of test mothods and their names.
       
    94 // -----------------------------------------------------------------------------
       
    95 //
       
    96 TInt CTestHybridTriggers::RunMethodL( 
       
    97     CStifItemParser& aItem ) 
       
    98     {
       
    99 
       
   100     static TStifFunctionInfo const KFunctions[] =
       
   101         {  
       
   102         // Copy this line for every implemented function.
       
   103         // First string is the function name used in TestScripter script file.
       
   104         // Second is the actual implementation member function. 
       
   105         ENTRY( "TC_TestNewL1L", CTestHybridTriggers::TC_TestNewL1L ),
       
   106         ENTRY( "TC_TestNewL2L", CTestHybridTriggers::TC_TestNewL2L ),
       
   107         ENTRY( "TC_TestNewL3L", CTestHybridTriggers::TC_TestNewL3L ),
       
   108         ENTRY( "TC_TestNewL4L", CTestHybridTriggers::TC_TestNewL4L ),
       
   109         ENTRY( "TC_TestNewL5L", CTestHybridTriggers::TC_TestNewL5L ),
       
   110         ENTRY( "TC_TestNewLC1L", CTestHybridTriggers::TC_TestNewLC1L ),
       
   111         ENTRY( "TC_TestNewLC2L", CTestHybridTriggers::TC_TestNewLC2L ),
       
   112         ENTRY( "TC_TestNewLC3L", CTestHybridTriggers::TC_TestNewLC3L ),
       
   113         ENTRY( "TC_TestNewLC4L", CTestHybridTriggers::TC_TestNewLC4L ),
       
   114         ENTRY( "TC_TestNewLC5L", CTestHybridTriggers::TC_TestNewLC5L ),
       
   115         ENTRY( "TC_TestSetHybridArea1L", CTestHybridTriggers::TC_TestSetHybridArea1L ),
       
   116         ENTRY( "TC_TestSetHybridArea2L", CTestHybridTriggers::TC_TestSetHybridArea2L ),
       
   117         ENTRY( "TC_TestSetHybridArea3L", CTestHybridTriggers::TC_TestSetHybridArea3L ),
       
   118         ENTRY( "TC_TestInternalizeAndExternalizeL", CTestHybridTriggers::TC_TestInternalizeAndExternalizeL ),
       
   119         ENTRY( "TC_TestCLbtTriggerConditionArea1L", CTestHybridTriggers::TC_TestCLbtTriggerConditionArea1L ),
       
   120         ENTRY( "TC_TestCLbtTriggerConditionArea2L", CTestHybridTriggers::TC_TestCLbtTriggerConditionArea2L ),
       
   121         ENTRY( "TC_TestCLbtTriggerConditionArea3L", CTestHybridTriggers::TC_TestCLbtTriggerConditionArea3L ),
       
   122         ENTRY( "TC_TestCLbtTriggerConditionArea4L", CTestHybridTriggers::TC_TestCLbtTriggerConditionArea4L ),
       
   123         ENTRY( "TC_TestCLbtTriggerFilterByArea1L", CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea1L ),
       
   124         ENTRY( "TC_TestCLbtTriggerFilterByArea2L", CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea2L ),
       
   125         ENTRY( "TC_TestCLbtTriggerFilterByArea3L", CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea3L ),
       
   126         ENTRY( "TC_TestCLbtTriggerFilterByArea4L", CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea4L ),
       
   127         ENTRY( "TC_TestCreatetrigger1L", CTestHybridTriggers::TC_TestCreatetrigger1L ),
       
   128         ENTRY( "TC_TestCreatetrigger2L", CTestHybridTriggers::TC_TestCreatetrigger2L ),
       
   129         ENTRY( "TC_TestCreatetrigger3L", CTestHybridTriggers::TC_TestCreatetrigger3L ),
       
   130         ENTRY( "TC_TestCreatetrigger4L", CTestHybridTriggers::TC_TestCreatetrigger4L ),
       
   131         ENTRY( "TC_TestDeleteTrigger1L", CTestHybridTriggers::TC_TestDeleteTrigger1L ),
       
   132         ENTRY( "TC_TestDeleteTrigger2L", CTestHybridTriggers::TC_TestDeleteTrigger2L ),
       
   133         ENTRY( "TC_TestDeleteTriggers1L", CTestHybridTriggers::TC_TestDeleteTriggers1L ),
       
   134         ENTRY( "TC_TestDeleteTriggers2L", CTestHybridTriggers::TC_TestDeleteTriggers2L ),
       
   135         ENTRY( "TC_TestDeleteTriggers3L", CTestHybridTriggers::TC_TestDeleteTriggers3L ),
       
   136         ENTRY( "TC_TestDeleteTriggers4L", CTestHybridTriggers::TC_TestDeleteTriggers4L ),
       
   137         ENTRY( "TC_TestDeleteTriggers5L", CTestHybridTriggers::TC_TestDeleteTriggers5L ),
       
   138         ENTRY( "TC_TestDeleteTriggers6L", CTestHybridTriggers::TC_TestDeleteTriggers6L ),
       
   139         ENTRY( "TC_TestDeleteTriggers7L", CTestHybridTriggers::TC_TestDeleteTriggers7L ),
       
   140         ENTRY( "TC_TestDeleteTriggers8L", CTestHybridTriggers::TC_TestDeleteTriggers8L ),
       
   141         ENTRY( "TC_TestDeleteTriggers9L", CTestHybridTriggers::TC_TestDeleteTriggers9L ),
       
   142         ENTRY( "TC_TestDeleteTriggers10L", CTestHybridTriggers::TC_TestDeleteTriggers10L ),
       
   143         ENTRY( "TC_TestDeleteTriggers11L", CTestHybridTriggers::TC_TestDeleteTriggers11L ),
       
   144         ENTRY( "TC_TestDeleteTriggers12L", CTestHybridTriggers::TC_TestDeleteTriggers12L ),
       
   145         ENTRY( "TC_TestGetTriggers1L", CTestHybridTriggers::TC_TestGetTriggers1L ),
       
   146         ENTRY( "TC_TestGetTriggers2L", CTestHybridTriggers::TC_TestGetTriggers2L ),
       
   147         ENTRY( "TC_TestGetTriggers3L", CTestHybridTriggers::TC_TestGetTriggers3L ),
       
   148         ENTRY( "TC_TestGetTriggers4L", CTestHybridTriggers::TC_TestGetTriggers4L ),
       
   149         ENTRY( "TC_TestGetTriggers5L", CTestHybridTriggers::TC_TestGetTriggers5L ),
       
   150         ENTRY( "TC_TestGetTriggers6L", CTestHybridTriggers::TC_TestGetTriggers6L ),
       
   151         ENTRY( "TC_TestGetTriggers7L", CTestHybridTriggers::TC_TestGetTriggers7L ),
       
   152         ENTRY( "TC_TestGetTriggers8L", CTestHybridTriggers::TC_TestGetTriggers8L ),
       
   153         ENTRY( "TC_TestGetTriggers9L", CTestHybridTriggers::TC_TestGetTriggers9L ),
       
   154         ENTRY( "TC_TestGetTriggers10L", CTestHybridTriggers::TC_TestGetTriggers10L ),
       
   155         ENTRY( "TC_TestGetTriggers11L", CTestHybridTriggers::TC_TestGetTriggers11L ),
       
   156         ENTRY( "TC_TestGetTriggers12L", CTestHybridTriggers::TC_TestGetTriggers12L ),
       
   157         ENTRY( "TC_TestGetTriggers_Iterator1L", CTestHybridTriggers::TC_TestGetTriggers_Iterator1L ),
       
   158         ENTRY( "TC_TestGetTriggers_Iterator2L", CTestHybridTriggers::TC_TestGetTriggers_Iterator2L ),
       
   159         ENTRY( "TC_TestGetTriggers_Iterator3L", CTestHybridTriggers::TC_TestGetTriggers_Iterator3L ),
       
   160         ENTRY( "TC_TestGetTriggers_Iterator4L", CTestHybridTriggers::TC_TestGetTriggers_Iterator4L ),
       
   161         ENTRY( "TC_TestGetTriggers_Iterator5L", CTestHybridTriggers::TC_TestGetTriggers_Iterator5L ),
       
   162         ENTRY( "TC_TestGetTriggers_Iterator6L", CTestHybridTriggers::TC_TestGetTriggers_Iterator6L ),
       
   163         ENTRY( "TC_TestGetTriggers_Iterator7L", CTestHybridTriggers::TC_TestGetTriggers_Iterator7L ),
       
   164         ENTRY( "TC_TestGetTriggers_Iterator8L", CTestHybridTriggers::TC_TestGetTriggers_Iterator8L ),
       
   165         ENTRY( "TC_TestGetTriggers_Iterator9L", CTestHybridTriggers::TC_TestGetTriggers_Iterator9L ),
       
   166         ENTRY( "TC_TestGetTriggers_Iterator10L", CTestHybridTriggers::TC_TestGetTriggers_Iterator10L ),
       
   167         ENTRY( "TC_TestGetTriggers_Iterator11L", CTestHybridTriggers::TC_TestGetTriggers_Iterator11L ),
       
   168         ENTRY( "TC_TestGetTriggers_Iterator12L", CTestHybridTriggers::TC_TestGetTriggers_Iterator12L ),
       
   169         ENTRY( "TC_TestSetTriggersState1L", CTestHybridTriggers::TC_TestSetTriggersState1L ),
       
   170         ENTRY( "TC_TestSetTriggersState2L", CTestHybridTriggers::TC_TestSetTriggersState2L ),
       
   171         ENTRY( "TC_TestSetTriggersState3L", CTestHybridTriggers::TC_TestSetTriggersState3L ),
       
   172         ENTRY( "TC_TestSetTriggersState4L", CTestHybridTriggers::TC_TestSetTriggersState4L ),
       
   173         ENTRY( "TC_TestSetTriggersState5L", CTestHybridTriggers::TC_TestSetTriggersState5L ),
       
   174         ENTRY( "TC_TestSetTriggersState6L", CTestHybridTriggers::TC_TestSetTriggersState6L ),
       
   175         ENTRY( "TC_TestSetTriggersState7L", CTestHybridTriggers::TC_TestSetTriggersState7L ),
       
   176         ENTRY( "TC_TestSetTriggersState8L", CTestHybridTriggers::TC_TestSetTriggersState8L ),
       
   177         ENTRY( "TC_TestSetTriggersState9L", CTestHybridTriggers::TC_TestSetTriggersState9L ),
       
   178         ENTRY( "TC_TestSetTriggersState10L", CTestHybridTriggers::TC_TestSetTriggersState10L ),
       
   179         ENTRY( "TC_TestSetTriggersState11L", CTestHybridTriggers::TC_TestSetTriggersState11L ),
       
   180         ENTRY( "TC_TestSetTriggersState12L", CTestHybridTriggers::TC_TestSetTriggersState12L ),
       
   181         ENTRY( "TC_TestSetTriggerState1L", CTestHybridTriggers::TC_TestSetTriggerState1L ),
       
   182         ENTRY( "TC_TestListtriggerIds1L", CTestHybridTriggers::TC_TestListtriggerIds1L ),
       
   183         ENTRY( "TC_TestListtriggerIds2L", CTestHybridTriggers::TC_TestListtriggerIds2L ),
       
   184         ENTRY( "TC_TestListtriggerIds3L", CTestHybridTriggers::TC_TestListtriggerIds3L ),
       
   185         ENTRY( "TC_TestListtriggerIds4L", CTestHybridTriggers::TC_TestListtriggerIds4L ),
       
   186         ENTRY( "TC_TestListtriggerIds5L", CTestHybridTriggers::TC_TestListtriggerIds5L ),
       
   187         ENTRY( "TC_TestListtriggerIds6L", CTestHybridTriggers::TC_TestListtriggerIds6L ),
       
   188         ENTRY( "TC_TestListtriggerIds7L", CTestHybridTriggers::TC_TestListtriggerIds7L ),
       
   189         ENTRY( "TC_TestListtriggerIds8L", CTestHybridTriggers::TC_TestListtriggerIds8L ),
       
   190         ENTRY( "TC_TestListtriggerIds9L", CTestHybridTriggers::TC_TestListtriggerIds9L ),
       
   191         ENTRY( "TC_TestListtriggerIds10L", CTestHybridTriggers::TC_TestListtriggerIds10L ),
       
   192         ENTRY( "TC_TestListtriggerIds11L", CTestHybridTriggers::TC_TestListtriggerIds11L ),
       
   193         ENTRY( "TC_TestListtriggerIds12L", CTestHybridTriggers::TC_TestListtriggerIds12L ),
       
   194         ENTRY( "TC_TestGettriggerLC1L", CTestHybridTriggers::TC_TestGettriggerLC1L ),
       
   195         ENTRY( "TC_TestGettriggerLC2L", CTestHybridTriggers::TC_TestGettriggerLC2L ),
       
   196         ENTRY( "TC_TestUpdateTrigger1L", CTestHybridTriggers::TC_TestUpdateTrigger1L ),
       
   197         ENTRY( "TC_TestUpdateTrigger2L", CTestHybridTriggers::TC_TestUpdateTrigger2L ),
       
   198         ENTRY( "TC_TestUpdateTrigger3L", CTestHybridTriggers::TC_TestUpdateTrigger3L ),
       
   199         ENTRY( "TC_TestUpdateTrigger4L", CTestHybridTriggers::TC_TestUpdateTrigger4L ),
       
   200         ENTRY( "TC_TestUpdateTrigger5L", CTestHybridTriggers::TC_TestUpdateTrigger5L ),
       
   201         ENTRY( "TC_TestUpdateTrigger6L", CTestHybridTriggers::TC_TestUpdateTrigger6L ),
       
   202         ENTRY( "TC_TestHybridTriggerFiring1L", CTestHybridTriggers::TC_TestHybridTriggerFiring1L ),
       
   203         ENTRY( "TC_TestHybridTriggerFiring2L", CTestHybridTriggers::TC_TestHybridTriggerFiring2L ),
       
   204         ENTRY( "StartCellChangeNotifierL", CTestHybridTriggers::StartCellChangeNotifierL ),
       
   205         //ADD NEW ENTRY HERE
       
   206         // [test cases entries] - Do not remove
       
   207 
       
   208         };
       
   209 
       
   210     const TInt count = sizeof( KFunctions ) / 
       
   211                         sizeof( TStifFunctionInfo );
       
   212 
       
   213     return RunInternalL( KFunctions, count, aItem );
       
   214 
       
   215     }
       
   216 
       
   217 void CTestHybridTriggers::AssertTrueL( TBool aCondition,const TDesC& aMessage )
       
   218     {
       
   219            
       
   220          if(!aCondition)
       
   221          {
       
   222           
       
   223            iLog->Log( aMessage );
       
   224            User::LeaveIfError(KErrGeneral);
       
   225          }
       
   226     
       
   227     }
       
   228 
       
   229 // -----------------------------------------------------------------------------
       
   230 // CTestHybridTriggers::TC_TestNewL1L
       
   231 // Testing CLbtGeoWlan::NewL()
       
   232 // (other items were commented in a header).
       
   233 // -----------------------------------------------------------------------------
       
   234 //
       
   235 TInt CTestHybridTriggers::TC_TestNewL1L( CStifItemParser& aItem )
       
   236     {
       
   237 
       
   238     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL();
       
   239     //Push to cleanup stack
       
   240     CleanupStack::PushL( Hybridarea );
       
   241         
       
   242     TBuf<4> Networkcountrycode1 = _L("1000");
       
   243     TBuf<8> Networkidentitycode1 = _L("10000000");
       
   244     TUint Locationareacode1 = 100;
       
   245     TUint CellId1 = 100;
       
   246         
       
   247     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   248                                                         Networkcountrycode1,
       
   249                                                         Networkidentitycode1,
       
   250                                                         Locationareacode1,
       
   251                                                         CellId1
       
   252                                                             );
       
   253     TBuf<4> Networkcountrycode2 = _L("2000");
       
   254     TBuf<8> Networkidentitycode2 = _L("20000000");
       
   255     TUint Locationareacode2 = 200;
       
   256     TUint CellId2 = 200;
       
   257         
       
   258     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   259                                                         Networkcountrycode2,
       
   260                                                         Networkidentitycode2,
       
   261                                                         Locationareacode2,
       
   262                                                         CellId2
       
   263                                                             );
       
   264     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   265     Hybridareaarray1.Append(Cellarea1);
       
   266     Hybridareaarray1.Append(Cellarea2);
       
   267     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
       
   268     
       
   269     Hybridareaarray2 = Hybridarea->HybridArea();
       
   270     AssertTrueL(Hybridareaarray2.Count()==0,_L("wrong array count"));
       
   271     Hybridarea->SetHybridArea(Hybridareaarray1);
       
   272     Hybridareaarray2 = Hybridarea->HybridArea();
       
   273     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
   274     
       
   275     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
   276         
       
   277     CLbtGeoCell* cell2=NULL;
       
   278     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   279     {
       
   280         cell2= static_cast<CLbtGeoCell*> (base);
       
   281     }    
       
   282     
       
   283     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   284     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
   285     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
   286     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
   287     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
   288     
       
   289     base=Hybridareaarray2[1];
       
   290             
       
   291     cell2=NULL;
       
   292     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   293     {
       
   294         cell2= static_cast<CLbtGeoCell*> (base);
       
   295     }    
       
   296     
       
   297     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   298     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
   299     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
   300     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
   301     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));      
       
   302     CleanupStack::PopAndDestroy( Hybridarea ); 
       
   303         
       
   304     return KErrNone;    
       
   305 
       
   306     }
       
   307 
       
   308 
       
   309 // -----------------------------------------------------------------------------
       
   310 // CTestHybridTriggers::TC_TestNewL2L
       
   311 // Testing CLbtGeoWlan::NewL()
       
   312 // (other items were commented in a header).
       
   313 // -----------------------------------------------------------------------------
       
   314 //
       
   315 TInt CTestHybridTriggers::TC_TestNewL2L( CStifItemParser& aItem )
       
   316     {
       
   317 
       
   318     TBuf<4> Networkcountrycode1 = _L("1000");
       
   319     TBuf<8> Networkidentitycode1 = _L("10000000");
       
   320     TUint Locationareacode1 = 100;
       
   321     TUint CellId1 = 100;
       
   322         
       
   323     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   324                                                         Networkcountrycode1,
       
   325                                                         Networkidentitycode1,
       
   326                                                         Locationareacode1,
       
   327                                                         CellId1
       
   328                                                             );
       
   329     TBuf<4> Networkcountrycode2 = _L("2000");
       
   330     TBuf<8> Networkidentitycode2 = _L("20000000");
       
   331     TUint Locationareacode2 = 200;
       
   332     TUint CellId2 = 200;
       
   333         
       
   334     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   335                                                         Networkcountrycode2,
       
   336                                                         Networkidentitycode2,
       
   337                                                         Locationareacode2,
       
   338                                                         CellId2
       
   339                                                             );
       
   340     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   341     Hybridareaarray1.Append(Cellarea1);
       
   342     Hybridareaarray1.Append(Cellarea2);
       
   343     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
   344     //Push to cleanup stack
       
   345     CleanupStack::PushL( Hybridarea );
       
   346         
       
   347     
       
   348     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
       
   349     
       
   350     Hybridareaarray2 = Hybridarea->HybridArea();
       
   351     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
   352     
       
   353     TBuf<4> Networkcountrycode3 = _L("3000");
       
   354     TBuf<8> Networkidentitycode3 = _L("30000000");
       
   355     TUint Locationareacode3 = 300;
       
   356     TUint CellId3 = 300;
       
   357         
       
   358     CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   359                                                         Networkcountrycode3,
       
   360                                                         Networkidentitycode3,
       
   361                                                         Locationareacode3,
       
   362                                                         CellId3
       
   363                                                             );
       
   364                                                             
       
   365     TBuf<4> Networkcountrycode4 = _L("4000");
       
   366     TBuf<8> Networkidentitycode4 = _L("40000000");
       
   367     TUint Locationareacode4 = 400;
       
   368     TUint CellId4 = 400;
       
   369         
       
   370     CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   371                                                         Networkcountrycode4,
       
   372                                                         Networkidentitycode4,
       
   373                                                         Locationareacode4,
       
   374                                                         CellId4
       
   375                                                             );
       
   376     RPointerArray<CLbtGeoAreaBase> Hybridareaarray3 ;
       
   377    // Hybridareaarray3.Append(Cellarea1);
       
   378    // Hybridareaarray3.Append(Cellarea2);
       
   379     Hybridareaarray3.Append(Cellarea3);
       
   380     Hybridareaarray3.Append(Cellarea4);
       
   381     Hybridarea->SetHybridArea(Hybridareaarray3);
       
   382     Hybridareaarray2 = Hybridarea->HybridArea();
       
   383     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
   384     
       
   385     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
   386         
       
   387     CLbtGeoCell* cell2=NULL;
       
   388     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   389     {
       
   390         cell2= static_cast<CLbtGeoCell*> (base);
       
   391     }    
       
   392     
       
   393     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   394     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
       
   395     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
       
   396     AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
       
   397     AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
       
   398     
       
   399     base=Hybridareaarray2[1];
       
   400             
       
   401     cell2=NULL;
       
   402     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   403     {
       
   404         cell2= static_cast<CLbtGeoCell*> (base);
       
   405     }    
       
   406     
       
   407     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   408     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
       
   409     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
       
   410     AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
       
   411     AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));      
       
   412     
       
   413     /*base=Hybridareaarray2[2];
       
   414                 
       
   415     cell2=NULL;
       
   416     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   417     {
       
   418         cell2= static_cast<CLbtGeoCell*> (base);
       
   419     }    
       
   420     
       
   421     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   422     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
       
   423     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
       
   424     AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
       
   425     AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));   */   
       
   426     CleanupStack::PopAndDestroy( Hybridarea ); 
       
   427         
       
   428     return KErrNone;    
       
   429 
       
   430     }
       
   431 
       
   432 // -----------------------------------------------------------------------------
       
   433 // CTestHybridTriggers::TC_TestNewL3L
       
   434 // Testing CLbtGeoWlan::NewL() with circular area as part of the Hybrid area array
       
   435 // (other items were commented in a header).
       
   436 // -----------------------------------------------------------------------------
       
   437 //
       
   438 TInt CTestHybridTriggers::TC_TestNewL3L( CStifItemParser& aItem )
       
   439     {
       
   440 
       
   441     TBuf<4> Networkcountrycode1 = _L("1000");
       
   442     TBuf<8> Networkidentitycode1 = _L("10000000");
       
   443     TUint Locationareacode1 = 100;
       
   444     TUint CellId1 = 100;
       
   445         
       
   446     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   447                                                         Networkcountrycode1,
       
   448                                                         Networkidentitycode1,
       
   449                                                         Locationareacode1,
       
   450                                                         CellId1
       
   451                                                             );
       
   452     TCoordinate coordinate(62.5285,23.9385);
       
   453         
       
   454     CLbtGeoCircle* circlearea=CLbtGeoCircle::NewL(coordinate,1000);
       
   455     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   456     Hybridareaarray1.Append(Cellarea1);
       
   457     Hybridareaarray1.Append(circlearea);
       
   458     TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
       
   459     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
   460     //Push to cleanup stack
       
   461     CleanupStack::PushL( Hybridarea );
       
   462         
       
   463     
       
   464     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
       
   465     
       
   466     Hybridareaarray2 = Hybridarea->HybridArea();
       
   467     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
   468       
       
   469     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
   470     
       
   471     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
   472         
       
   473     CLbtGeoCell* cell2=NULL;
       
   474     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   475     {
       
   476         cell2= static_cast<CLbtGeoCell*> (base);
       
   477     }    
       
   478     
       
   479     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   480     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
   481     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
   482     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
   483     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
   484     
       
   485     base=Hybridareaarray2[1];
       
   486             
       
   487     CLbtGeoCircle* circle2 =NULL;
       
   488     if(base->Type()==CLbtGeoAreaBase::ECircle)
       
   489     {
       
   490     circle2= static_cast<CLbtGeoCircle*> (base);
       
   491     }    
       
   492     
       
   493     TCoordinate center2 = circle2->Center();
       
   494     TReal32 distance;
       
   495     center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
       
   496     if(distance!=0)
       
   497     {
       
   498         return KErrGeneral;
       
   499     }
       
   500     TReal radius = circle2->Radius();
       
   501     if(radius != 1000)
       
   502     {
       
   503         return KErrGeneral;
       
   504     }
       
   505    
       
   506     CleanupStack::PopAndDestroy( Hybridarea ); 
       
   507         
       
   508     return KErrNone;    
       
   509 
       
   510     }
       
   511 
       
   512 // -----------------------------------------------------------------------------
       
   513 // CTestHybridTriggers::TC_TestNewL4L
       
   514 // Testing CLbtGeoWlan::NewL() using empty array
       
   515 // (other items were commented in a header).
       
   516 // -----------------------------------------------------------------------------
       
   517 //
       
   518 TInt CTestHybridTriggers::TC_TestNewL4L( CStifItemParser& aItem )
       
   519     {
       
   520  
       
   521     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   522     TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
       
   523     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
   524            
       
   525     return KErrNone;    
       
   526 
       
   527     }
       
   528 
       
   529 // -----------------------------------------------------------------------------
       
   530 // CTestHybridTriggers::TC_TestNewL5L
       
   531 // Testing CLbtGeoWlan::NewL() with CLbtGeoRect as one of the arae in the array
       
   532 // (other items were commented in a header).
       
   533 // -----------------------------------------------------------------------------
       
   534 //
       
   535 TInt CTestHybridTriggers::TC_TestNewL5L( CStifItemParser& aItem )
       
   536     {
       
   537  
       
   538     TBuf<4> Networkcountrycode1 = _L("1000");
       
   539     TBuf<8> Networkidentitycode1 = _L("10000000");
       
   540     TUint Locationareacode1 = 100;
       
   541     TUint CellId1 = 100;
       
   542         
       
   543     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   544                                                         Networkcountrycode1,
       
   545                                                         Networkidentitycode1,
       
   546                                                         Locationareacode1,
       
   547                                                         CellId1
       
   548                                                             );
       
   549     CLbtGeoRect* Rectarea = CLbtGeoRect::NewL( 20,70,20,70);
       
   550     
       
   551     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   552     Hybridareaarray1.Append(Cellarea1);
       
   553     Hybridareaarray1.Append(Rectarea);
       
   554     TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
       
   555     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
   556 		return KErrNone;
       
   557     }
       
   558 
       
   559 // -----------------------------------------------------------------------------
       
   560 // CTestHybridTriggers::TC_TestNewLC1L
       
   561 // Testing CLbtGeoWlan::NewLC()
       
   562 // (other items were commented in a header).
       
   563 // -----------------------------------------------------------------------------
       
   564 //
       
   565 TInt CTestHybridTriggers::TC_TestNewLC1L( CStifItemParser& aItem )
       
   566     {
       
   567 
       
   568     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC();
       
   569     
       
   570     TBuf<4> Networkcountrycode1 = _L("1000");
       
   571     TBuf<8> Networkidentitycode1 = _L("10000000");
       
   572     TUint Locationareacode1 = 100;
       
   573     TUint CellId1 = 100;
       
   574         
       
   575     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   576                                                         Networkcountrycode1,
       
   577                                                         Networkidentitycode1,
       
   578                                                         Locationareacode1,
       
   579                                                         CellId1
       
   580                                                             );
       
   581     TBuf<4> Networkcountrycode2 = _L("2000");
       
   582     TBuf<8> Networkidentitycode2 = _L("20000000");
       
   583     TUint Locationareacode2 = 200;
       
   584     TUint CellId2 = 200;
       
   585         
       
   586     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   587                                                         Networkcountrycode2,
       
   588                                                         Networkidentitycode2,
       
   589                                                         Locationareacode2,
       
   590                                                         CellId2
       
   591                                                             );
       
   592     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   593             Hybridareaarray1.Append(Cellarea1);
       
   594             Hybridareaarray1.Append(Cellarea2);
       
   595     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
       
   596     
       
   597     Hybridareaarray2 = Hybridarea->HybridArea();
       
   598     AssertTrueL(Hybridareaarray2.Count()==0,_L("wrong array count"));
       
   599     Hybridarea->SetHybridArea(Hybridareaarray1);
       
   600     Hybridareaarray2 = Hybridarea->HybridArea();
       
   601     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
   602     
       
   603     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
   604         
       
   605     CLbtGeoCell* cell2=NULL;
       
   606     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   607     {
       
   608         cell2= static_cast<CLbtGeoCell*> (base);
       
   609     }    
       
   610     
       
   611     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   612     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
   613     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
   614     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
   615     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
   616     
       
   617     base=Hybridareaarray2[1];
       
   618             
       
   619     cell2=NULL;
       
   620     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   621     {
       
   622         cell2= static_cast<CLbtGeoCell*> (base);
       
   623     }    
       
   624     
       
   625     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   626     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
   627     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
   628     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
   629     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));      
       
   630     CleanupStack::PopAndDestroy( Hybridarea ); 
       
   631         
       
   632     return KErrNone;    
       
   633 
       
   634     }
       
   635 
       
   636 
       
   637 // -----------------------------------------------------------------------------
       
   638 // CTestHybridTriggers::TC_TestNewLC2L
       
   639 // Testing CLbtGeoWlan::NewLC()
       
   640 // (other items were commented in a header).
       
   641 // -----------------------------------------------------------------------------
       
   642 //
       
   643 TInt CTestHybridTriggers::TC_TestNewLC2L( CStifItemParser& aItem )
       
   644     {
       
   645 
       
   646     TBuf<4> Networkcountrycode1 = _L("1000");
       
   647     TBuf<8> Networkidentitycode1 = _L("10000000");
       
   648     TUint Locationareacode1 = 100;
       
   649     TUint CellId1 = 100;
       
   650         
       
   651     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   652                                                         Networkcountrycode1,
       
   653                                                         Networkidentitycode1,
       
   654                                                         Locationareacode1,
       
   655                                                         CellId1
       
   656                                                             );
       
   657     TBuf<4> Networkcountrycode2 = _L("2000");
       
   658     TBuf<8> Networkidentitycode2 = _L("20000000");
       
   659     TUint Locationareacode2 = 200;
       
   660     TUint CellId2 = 200;
       
   661         
       
   662     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   663                                                         Networkcountrycode2,
       
   664                                                         Networkidentitycode2,
       
   665                                                         Locationareacode2,
       
   666                                                         CellId2
       
   667                                                             );
       
   668     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   669                 Hybridareaarray1.Append(Cellarea1);
       
   670                 Hybridareaarray1.Append(Cellarea2);
       
   671     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC(Hybridareaarray1);
       
   672     
       
   673     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
       
   674     
       
   675     Hybridareaarray2 = Hybridarea->HybridArea();
       
   676     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
   677     
       
   678     TBuf<4> Networkcountrycode3 = _L("3000");
       
   679     TBuf<8> Networkidentitycode3 = _L("30000000");
       
   680     TUint Locationareacode3 = 300;
       
   681     TUint CellId3 = 200;
       
   682         
       
   683     CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   684                                                         Networkcountrycode3,
       
   685                                                         Networkidentitycode3,
       
   686                                                         Locationareacode3,
       
   687                                                         CellId3
       
   688                                                             );
       
   689     TBuf<4> Networkcountrycode4 = _L("4000");
       
   690     TBuf<8> Networkidentitycode4 = _L("40000000");
       
   691     TUint Locationareacode4 = 400;
       
   692     TUint CellId4 = 400;
       
   693         
       
   694     CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   695                                                         Networkcountrycode4,
       
   696                                                         Networkidentitycode4,
       
   697                                                         Locationareacode4,
       
   698                                                         CellId4
       
   699                                                             );
       
   700     RPointerArray<CLbtGeoAreaBase> Hybridareaarray3 ;
       
   701    // Hybridareaarray3.Append(Cellarea1);
       
   702    // Hybridareaarray3.Append(Cellarea2);
       
   703     Hybridareaarray3.Append(Cellarea3);
       
   704     Hybridareaarray3.Append(Cellarea4);
       
   705     Hybridarea->SetHybridArea(Hybridareaarray3);
       
   706     Hybridareaarray2 = Hybridarea->HybridArea();
       
   707     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
   708     
       
   709     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
   710         
       
   711     CLbtGeoCell* cell2=NULL;
       
   712     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   713     {
       
   714         cell2= static_cast<CLbtGeoCell*> (base);
       
   715     }    
       
   716     
       
   717     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   718     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
       
   719     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
       
   720     AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
       
   721     AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
       
   722     
       
   723     base=Hybridareaarray2[1];
       
   724             
       
   725     cell2=NULL;
       
   726     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   727     {
       
   728         cell2= static_cast<CLbtGeoCell*> (base);
       
   729     }    
       
   730     
       
   731     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   732     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
       
   733     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
       
   734     AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
       
   735     AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));      
       
   736     
       
   737     
       
   738     CleanupStack::PopAndDestroy( Hybridarea ); 
       
   739     return KErrNone;    
       
   740 
       
   741     }
       
   742 
       
   743 // -----------------------------------------------------------------------------
       
   744 // CTestHybridTriggers::TC_TestNewL3L
       
   745 // Testing CLbtGeoWlan::NewL() with circular area as part of the Hybrid area array
       
   746 // (other items were commented in a header).
       
   747 // -----------------------------------------------------------------------------
       
   748 //
       
   749 TInt CTestHybridTriggers::TC_TestNewLC3L( CStifItemParser& aItem )
       
   750     {
       
   751 
       
   752     TBuf<4> Networkcountrycode1 = _L("1000");
       
   753     TBuf<8> Networkidentitycode1 = _L("10000000");
       
   754     TUint Locationareacode1 = 100;
       
   755     TUint CellId1 = 100;
       
   756         
       
   757     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   758                                                         Networkcountrycode1,
       
   759                                                         Networkidentitycode1,
       
   760                                                         Locationareacode1,
       
   761                                                         CellId1
       
   762                                                             );
       
   763     TCoordinate coordinate(62.5285,23.9385);
       
   764         
       
   765     CLbtGeoCircle* circlearea=CLbtGeoCircle::NewL(coordinate,1000);
       
   766     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   767                     Hybridareaarray1.Append(Cellarea1);
       
   768                     Hybridareaarray1.Append(circlearea);
       
   769     TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
       
   770     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC(Hybridareaarray1);
       
   771     
       
   772     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
       
   773     
       
   774     Hybridareaarray2 = Hybridarea->HybridArea();
       
   775     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
   776       
       
   777     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
   778     
       
   779     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
   780         
       
   781     CLbtGeoCell* cell2=NULL;
       
   782     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   783     {
       
   784         cell2= static_cast<CLbtGeoCell*> (base);
       
   785     }    
       
   786     
       
   787     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   788     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
   789     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
   790     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
   791     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
   792     
       
   793     base=Hybridareaarray2[1];
       
   794             
       
   795     CLbtGeoCircle* circle2=NULL;
       
   796     if(base->Type()==CLbtGeoAreaBase::ECircle)
       
   797     {
       
   798     circle2= static_cast<CLbtGeoCircle*> (base);
       
   799     }    
       
   800     
       
   801     TCoordinate center2 = circle2->Center();
       
   802     TReal32 distance;
       
   803     center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
       
   804     if(distance!=0)
       
   805     {
       
   806         return KErrGeneral;
       
   807     }
       
   808     TReal radius = circle2->Radius();
       
   809     if(radius != 1000)
       
   810     {
       
   811         return KErrGeneral;
       
   812     }
       
   813    
       
   814     CleanupStack::PopAndDestroy( Hybridarea ); 
       
   815         
       
   816     return KErrNone;    
       
   817 
       
   818     }
       
   819 
       
   820 // -----------------------------------------------------------------------------
       
   821 // CTestHybridTriggers::TC_TestNewLC3L
       
   822 // Testing CLbtGeoWlan::NewLC() using empty array
       
   823 // (other items were commented in a header).
       
   824 // -----------------------------------------------------------------------------
       
   825 //
       
   826 TInt CTestHybridTriggers::TC_TestNewLC4L( CStifItemParser& aItem )
       
   827     {
       
   828  
       
   829     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   830     TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
       
   831     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC(Hybridareaarray1);
       
   832         
       
   833     return KErrNone;    
       
   834 
       
   835     }
       
   836 
       
   837 // -----------------------------------------------------------------------------
       
   838 // CTestHybridTriggers::TC_TestNewLC5L
       
   839 // Testing CLbtGeoWlan::NewLC() with CLbtGeoRect as one of the arae in the array
       
   840 // (other items were commented in a header).
       
   841 // -----------------------------------------------------------------------------
       
   842 //
       
   843 TInt CTestHybridTriggers::TC_TestNewLC5L( CStifItemParser& aItem )
       
   844     {
       
   845  
       
   846     TBuf<4> Networkcountrycode1 = _L("1000");
       
   847     TBuf<8> Networkidentitycode1 = _L("10000000");
       
   848     TUint Locationareacode1 = 100;
       
   849     TUint CellId1 = 100;
       
   850         
       
   851     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   852                                                         Networkcountrycode1,
       
   853                                                         Networkidentitycode1,
       
   854                                                         Locationareacode1,
       
   855                                                         CellId1
       
   856                                                             );
       
   857     CLbtGeoRect* Rectarea = CLbtGeoRect::NewL( 20,70,20,70);
       
   858     
       
   859     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   860                         Hybridareaarray1.Append(Cellarea1);
       
   861                         Hybridareaarray1.Append(Rectarea);
       
   862     TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
       
   863     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC(Hybridareaarray1);
       
   864 		return KErrNone;
       
   865     }
       
   866 
       
   867 // -----------------------------------------------------------------------------
       
   868 // CTestHybridTriggers::TC_TestSetHybridArea1L
       
   869 // Testing SetHybridArea with one cellular area and one circular area
       
   870 // (other items were commented in a header).
       
   871 // -----------------------------------------------------------------------------
       
   872 //
       
   873 TInt CTestHybridTriggers::TC_TestSetHybridArea1L( CStifItemParser& aItem )
       
   874     {
       
   875 
       
   876     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL();
       
   877     //Push to cleanup stack
       
   878     CleanupStack::PushL( Hybridarea );
       
   879         
       
   880     TBuf<4> Networkcountrycode1 = _L("1000");
       
   881     TBuf<8> Networkidentitycode1 = _L("10000000");
       
   882     TUint Locationareacode1 = 100;
       
   883     TUint CellId1 = 100;
       
   884         
       
   885     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   886                                                         Networkcountrycode1,
       
   887                                                         Networkidentitycode1,
       
   888                                                         Locationareacode1,
       
   889                                                         CellId1
       
   890                                                             );
       
   891     TCoordinate coordinate(62.5285,23.9385);
       
   892            
       
   893     CLbtGeoCircle* circlearea=CLbtGeoCircle::NewL(coordinate,1000);
       
   894     TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
       
   895     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   896                             Hybridareaarray1.Append(Cellarea1);
       
   897                             Hybridareaarray1.Append(circlearea);
       
   898     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
       
   899     
       
   900     Hybridareaarray2 = Hybridarea->HybridArea();
       
   901     AssertTrueL(Hybridareaarray2.Count()==0,_L("wrong array count"));
       
   902     Hybridarea->SetHybridArea(Hybridareaarray1);
       
   903     Hybridareaarray2 = Hybridarea->HybridArea();
       
   904     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
   905     
       
   906     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
   907         
       
   908     CLbtGeoCell* cell2=NULL;
       
   909     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
   910     {
       
   911         cell2= static_cast<CLbtGeoCell*> (base);
       
   912     }    
       
   913     
       
   914     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
   915     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
   916     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
   917     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
   918     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
   919     
       
   920     base=Hybridareaarray2[1];
       
   921                 
       
   922     CLbtGeoCircle* circle2 =NULL;
       
   923     if(base->Type()==CLbtGeoAreaBase::ECircle)
       
   924     {
       
   925     circle2= static_cast<CLbtGeoCircle*> (base);
       
   926     }    
       
   927     
       
   928     TCoordinate center2 = circle2->Center();
       
   929     TReal32 distance;
       
   930     center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
       
   931     if(distance!=0)
       
   932     {
       
   933         return KErrGeneral;
       
   934     }
       
   935     TReal radius = circle2->Radius();
       
   936     if(radius != 1000)
       
   937     {
       
   938         return KErrGeneral;
       
   939     }
       
   940     CleanupStack::PopAndDestroy( Hybridarea ); 
       
   941         
       
   942     return KErrNone;    
       
   943 
       
   944     }
       
   945 
       
   946 // -----------------------------------------------------------------------------
       
   947 // CTestHybridTriggers::TC_TestNewL4L
       
   948 // Testing SetHybridArea with empty array
       
   949 // (other items were commented in a header).
       
   950 // -----------------------------------------------------------------------------
       
   951 //
       
   952 TInt CTestHybridTriggers::TC_TestSetHybridArea2L( CStifItemParser& aItem )
       
   953     {
       
   954  
       
   955     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   956     TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
       
   957     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL();
       
   958     Hybridarea->SetHybridArea(Hybridareaarray1);
       
   959            
       
   960     return KErrNone;    
       
   961 
       
   962     }
       
   963 
       
   964 // -----------------------------------------------------------------------------
       
   965 // CTestHybridTriggers::TC_TestNewL5L
       
   966 // Testing SetHybridArea with CLbtGeoRect as one of the arae in the array
       
   967 // (other items were commented in a header).
       
   968 // -----------------------------------------------------------------------------
       
   969 //
       
   970 TInt CTestHybridTriggers::TC_TestSetHybridArea3L( CStifItemParser& aItem )
       
   971     {
       
   972  
       
   973     TBuf<4> Networkcountrycode1 = _L("1000");
       
   974     TBuf<8> Networkidentitycode1 = _L("10000000");
       
   975     TUint Locationareacode1 = 100;
       
   976     TUint CellId1 = 100;
       
   977         
       
   978     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
   979                                                         Networkcountrycode1,
       
   980                                                         Networkidentitycode1,
       
   981                                                         Locationareacode1,
       
   982                                                         CellId1
       
   983                                                             );
       
   984     CLbtGeoRect* Rectarea = CLbtGeoRect::NewL( 20,70,20,70);
       
   985     
       
   986     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
   987                                 Hybridareaarray1.Append(Cellarea1);
       
   988                                 Hybridareaarray1.Append(Rectarea);
       
   989     TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6); 
       
   990     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL();
       
   991     Hybridarea->SetHybridArea(Hybridareaarray1);
       
   992 		return KErrNone;
       
   993     }
       
   994 
       
   995 // -----------------------------------------------------------------------------
       
   996 // CTestHybridTriggers::TC_TestInternalizeAndExternalizeL
       
   997 // Calling Bssid() function by passing index greater than number of elements in the array
       
   998 // (other items were commented in a header).
       
   999 // -----------------------------------------------------------------------------
       
  1000 //
       
  1001 TInt CTestHybridTriggers::TC_TestInternalizeAndExternalizeL( CStifItemParser& aItem )
       
  1002     {
       
  1003 
       
  1004     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewLC();
       
  1005         
       
  1006     TBuf<4> Networkcountrycode1 = _L("1000");
       
  1007     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  1008     TUint Locationareacode1 = 100;
       
  1009     TUint CellId1 = 100;
       
  1010         
       
  1011     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1012                                                         Networkcountrycode1,
       
  1013                                                         Networkidentitycode1,
       
  1014                                                         Locationareacode1,
       
  1015                                                         CellId1
       
  1016                                                             );
       
  1017     TBuf<4> Networkcountrycode2 = _L("2000");
       
  1018     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  1019     TUint Locationareacode2 = 200;
       
  1020     TUint CellId2 = 200;
       
  1021         
       
  1022     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1023                                                         Networkcountrycode2,
       
  1024                                                         Networkidentitycode2,
       
  1025                                                         Locationareacode2,
       
  1026                                                         CellId2
       
  1027                                                             );
       
  1028     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  1029     Hybridareaarray1.Append(Cellarea1);
       
  1030     Hybridareaarray1.Append(Cellarea2);
       
  1031     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2;
       
  1032     Hybridarea->SetHybridArea(Hybridareaarray1);
       
  1033     
       
  1034     CBufFlat* buffer= CBufFlat::NewL(256);
       
  1035     CleanupStack::PushL( buffer );  
       
  1036    
       
  1037     RBufWriteStream wr;
       
  1038     wr.Open(*buffer);
       
  1039     CleanupClosePushL(wr);
       
  1040     Hybridarea->ExternalizeL(wr);
       
  1041    
       
  1042     wr.CommitL();
       
  1043     CleanupStack::PopAndDestroy(&wr);
       
  1044 
       
  1045     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL();
       
  1046        
       
  1047     //Push to cleanup stack
       
  1048     CleanupStack::PushL( Hybridarea2 ); 
       
  1049    
       
  1050     RBufReadStream rd;
       
  1051     rd.Open(*buffer);
       
  1052     CleanupClosePushL(rd);
       
  1053    
       
  1054     Hybridarea2->InternalizeL(rd);
       
  1055    
       
  1056     CleanupStack::PopAndDestroy(&rd);
       
  1057    
       
  1058     buffer->Reset();
       
  1059    
       
  1060     Hybridareaarray2 = Hybridarea2->HybridArea();
       
  1061     AssertTrueL(Hybridareaarray2.Count()==2,_L("wrong array count"));
       
  1062     
       
  1063     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  1064         
       
  1065     CLbtGeoCell* cell2=NULL;
       
  1066     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1067     {
       
  1068         cell2= static_cast<CLbtGeoCell*> (base);
       
  1069     }    
       
  1070     
       
  1071     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1072     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  1073     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  1074     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  1075     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  1076     
       
  1077     base=Hybridareaarray2[1];
       
  1078             
       
  1079     cell2=NULL;
       
  1080     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1081     {
       
  1082         cell2= static_cast<CLbtGeoCell*> (base);
       
  1083     }    
       
  1084     
       
  1085     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1086     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  1087     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  1088     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  1089     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));      
       
  1090           
       
  1091     CleanupStack::PopAndDestroy( 3 );
       
  1092         
       
  1093     return KErrNone;    
       
  1094     }
       
  1095 
       
  1096 // -----------------------------------------------------------------------------
       
  1097 // CTestHybridTriggers::TC_TestCLbtTriggerConditionArea1L
       
  1098 // Allocates and constructs a new Trigger Condition area object using CLbtGeoHybrid 1
       
  1099 // (other items were commented in a header).
       
  1100 // -----------------------------------------------------------------------------
       
  1101 //
       
  1102 TInt CTestHybridTriggers::TC_TestCLbtTriggerConditionArea1L( CStifItemParser& aItem )
       
  1103     {
       
  1104 
       
  1105     CLbtTriggerConditionArea* cond1= CLbtTriggerConditionArea::NewL( );
       
  1106     CleanupStack::PushL( cond1 ); 
       
  1107     
       
  1108     cond1->SetDirection( CLbtTriggerConditionArea::EFireOnExit );
       
  1109   
       
  1110     TBuf<4> Networkcountrycode1 = _L("1000");
       
  1111     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  1112     TUint Locationareacode1 = 100;
       
  1113     TUint CellId1 = 100;
       
  1114         
       
  1115     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1116                                                         Networkcountrycode1,
       
  1117                                                         Networkidentitycode1,
       
  1118                                                         Locationareacode1,
       
  1119                                                         CellId1
       
  1120                                                             );
       
  1121     TBuf<4> Networkcountrycode2 = _L("2000");
       
  1122     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  1123     TUint Locationareacode2 = 200;
       
  1124     TUint CellId2 = 200;
       
  1125         
       
  1126     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1127                                                         Networkcountrycode2,
       
  1128                                                         Networkidentitycode2,
       
  1129                                                         Locationareacode2,
       
  1130                                                         CellId2
       
  1131                                                             );
       
  1132     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  1133     Hybridareaarray1.Append(Cellarea1);
       
  1134     Hybridareaarray1.Append(Cellarea2);
       
  1135     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  1136         
       
  1137     cond1->SetTriggerArea( Hybridarea );
       
  1138     
       
  1139         
       
  1140     CLbtGeoAreaBase* TrigArea=cond1->TriggerArea();
       
  1141     
       
  1142     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  1143     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  1144     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  1145     
       
  1146     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  1147             
       
  1148     CLbtGeoCell* cell2=NULL;
       
  1149     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1150     {
       
  1151         cell2= static_cast<CLbtGeoCell*> (base);
       
  1152     }    
       
  1153     
       
  1154     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1155     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  1156     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  1157     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  1158     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  1159     
       
  1160     base=Hybridareaarray2[1];
       
  1161             
       
  1162     cell2=NULL;
       
  1163     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1164     {
       
  1165         cell2= static_cast<CLbtGeoCell*> (base);
       
  1166     }    
       
  1167     
       
  1168     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1169     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  1170     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  1171     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  1172     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));      
       
  1173     
       
  1174     CleanupStack::PopAndDestroy( 1 );
       
  1175     
       
  1176     return KErrNone;
       
  1177     
       
  1178     }
       
  1179 
       
  1180 // -----------------------------------------------------------------------------
       
  1181 // CTestHybridTriggers::TC_TestCLbtTriggerConditionArea2L
       
  1182 // Allocates and constructs a new Trigger Condition area object using CLbtGeoWlan 2
       
  1183 // (other items were commented in a header).
       
  1184 // -----------------------------------------------------------------------------
       
  1185 //
       
  1186 TInt CTestHybridTriggers::TC_TestCLbtTriggerConditionArea2L( CStifItemParser& aItem )
       
  1187     {
       
  1188 
       
  1189     CLbtTriggerConditionArea* cond1= CLbtTriggerConditionArea::NewLC( );
       
  1190    
       
  1191    cond1->SetDirection( CLbtTriggerConditionArea::EFireOnExit );
       
  1192  
       
  1193    TBuf<4> Networkcountrycode1 = _L("1000");
       
  1194    TBuf<8> Networkidentitycode1 = _L("10000000");
       
  1195    TUint Locationareacode1 = 100;
       
  1196    TUint CellId1 = 100;
       
  1197        
       
  1198    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1199                                                        Networkcountrycode1,
       
  1200                                                        Networkidentitycode1,
       
  1201                                                        Locationareacode1,
       
  1202                                                        CellId1
       
  1203                                                            );
       
  1204    TBuf<4> Networkcountrycode2 = _L("2000");
       
  1205    TBuf<8> Networkidentitycode2 = _L("20000000");
       
  1206    TUint Locationareacode2 = 200;
       
  1207    TUint CellId2 = 200;
       
  1208        
       
  1209    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1210                                                        Networkcountrycode2,
       
  1211                                                        Networkidentitycode2,
       
  1212                                                        Locationareacode2,
       
  1213                                                        CellId2
       
  1214                                                            );
       
  1215    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  1216    Hybridareaarray1.Append(Cellarea1);
       
  1217    Hybridareaarray1.Append(Cellarea2);
       
  1218    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  1219        
       
  1220    cond1->SetTriggerArea( Hybridarea );
       
  1221    
       
  1222        
       
  1223    CLbtGeoAreaBase* TrigArea=cond1->TriggerArea();
       
  1224    
       
  1225    AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  1226    CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  1227        RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  1228    
       
  1229    CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  1230            
       
  1231    CLbtGeoCell* cell2=NULL;
       
  1232    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1233    {
       
  1234        cell2= static_cast<CLbtGeoCell*> (base);
       
  1235    }    
       
  1236    
       
  1237    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1238    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  1239    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  1240    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  1241    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  1242    
       
  1243    base=Hybridareaarray2[1];
       
  1244            
       
  1245    cell2=NULL;
       
  1246    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1247    {
       
  1248        cell2= static_cast<CLbtGeoCell*> (base);
       
  1249    }    
       
  1250    
       
  1251    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1252    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  1253    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  1254    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  1255    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));      
       
  1256    
       
  1257    CleanupStack::PopAndDestroy( 1 );
       
  1258    
       
  1259    return KErrNone;
       
  1260     
       
  1261     }
       
  1262 
       
  1263 // -----------------------------------------------------------------------------
       
  1264 // CTestHybridTriggers::TC_TestCLbtTriggerConditionArea3L
       
  1265 // Allocates and constructs a new Trigger Condition area object using CLbtGeoWlan 3
       
  1266 // (other items were commented in a header).
       
  1267 // -----------------------------------------------------------------------------
       
  1268 //
       
  1269 TInt CTestHybridTriggers::TC_TestCLbtTriggerConditionArea3L( CStifItemParser& aItem )
       
  1270     {
       
  1271 
       
  1272     TBuf<4> Networkcountrycode1 = _L("1000");
       
  1273    TBuf<8> Networkidentitycode1 = _L("10000000");
       
  1274    TUint Locationareacode1 = 100;
       
  1275    TUint CellId1 = 100;
       
  1276        
       
  1277    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1278                                                        Networkcountrycode1,
       
  1279                                                        Networkidentitycode1,
       
  1280                                                        Locationareacode1,
       
  1281                                                        CellId1
       
  1282                                                            );
       
  1283    TBuf<4> Networkcountrycode2 = _L("2000");
       
  1284    TBuf<8> Networkidentitycode2 = _L("20000000");
       
  1285    TUint Locationareacode2 = 200;
       
  1286    TUint CellId2 = 200;
       
  1287        
       
  1288    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1289                                                        Networkcountrycode2,
       
  1290                                                        Networkidentitycode2,
       
  1291                                                        Locationareacode2,
       
  1292                                                        CellId2
       
  1293                                                            );
       
  1294    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  1295    Hybridareaarray1.Append(Cellarea1);
       
  1296    Hybridareaarray1.Append(Cellarea2);
       
  1297    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  1298     
       
  1299     CLbtTriggerConditionArea* cond1= CLbtTriggerConditionArea::NewL(Hybridarea,CLbtTriggerConditionArea::EFireOnExit );
       
  1300     CleanupStack::PushL( cond1 ); 
       
  1301         
       
  1302     CLbtGeoAreaBase* TrigArea=cond1->TriggerArea();
       
  1303        
       
  1304    AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  1305    CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  1306        RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  1307    
       
  1308    CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  1309            
       
  1310    CLbtGeoCell* cell2=NULL;
       
  1311    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1312    {
       
  1313        cell2= static_cast<CLbtGeoCell*> (base);
       
  1314    }    
       
  1315    
       
  1316    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1317    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  1318    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  1319    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  1320    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  1321    
       
  1322    base=Hybridareaarray2[1];
       
  1323            
       
  1324    cell2=NULL;
       
  1325    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1326    {
       
  1327        cell2= static_cast<CLbtGeoCell*> (base);
       
  1328    }    
       
  1329    
       
  1330    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1331    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  1332    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  1333    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  1334    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  1335     
       
  1336     CleanupStack::PopAndDestroy( 1 );
       
  1337     
       
  1338     return KErrNone;
       
  1339     
       
  1340     }
       
  1341 
       
  1342 // -----------------------------------------------------------------------------
       
  1343 // CTestHybridTriggers::TC_TestCLbtTriggerConditionArea4L
       
  1344 // Internalize & Externalize (ClbtTriggerConditionArea)
       
  1345 // (other items were commented in a header).
       
  1346 // -----------------------------------------------------------------------------
       
  1347 //
       
  1348 
       
  1349 
       
  1350 TInt CTestHybridTriggers::TC_TestCLbtTriggerConditionArea4L( CStifItemParser& /* aItem */ )
       
  1351     {
       
  1352     CLbtTriggerConditionArea* cond1= CLbtTriggerConditionArea::NewL( );
       
  1353     CleanupStack::PushL( cond1 ); 
       
  1354     
       
  1355     cond1->SetDirection( CLbtTriggerConditionArea::EFireOnExit );
       
  1356     
       
  1357     TBuf<4> Networkcountrycode1 = _L("1000");
       
  1358    TBuf<8> Networkidentitycode1 = _L("10000000");
       
  1359    TUint Locationareacode1 = 100;
       
  1360    TUint CellId1 = 100;
       
  1361        
       
  1362    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1363                                                        Networkcountrycode1,
       
  1364                                                        Networkidentitycode1,
       
  1365                                                        Locationareacode1,
       
  1366                                                        CellId1
       
  1367                                                            );
       
  1368    TBuf<4> Networkcountrycode2 = _L("2000");
       
  1369    TBuf<8> Networkidentitycode2 = _L("20000000");
       
  1370    TUint Locationareacode2 = 200;
       
  1371    TUint CellId2 = 200;
       
  1372        
       
  1373    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1374                                                        Networkcountrycode2,
       
  1375                                                        Networkidentitycode2,
       
  1376                                                        Locationareacode2,
       
  1377                                                        CellId2
       
  1378                                                            );
       
  1379    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  1380    Hybridareaarray1.Append(Cellarea1);
       
  1381    Hybridareaarray1.Append(Cellarea2);
       
  1382    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  1383        
       
  1384    cond1->SetTriggerArea( Hybridarea );
       
  1385     
       
  1386     CBufFlat* buffer= CBufFlat::NewL(256);
       
  1387     CleanupStack::PushL( buffer );  
       
  1388     
       
  1389     RBufWriteStream wr;
       
  1390     wr.Open(*buffer);
       
  1391     CleanupClosePushL(wr);    
       
  1392     cond1->ExternalizeL(wr);
       
  1393     
       
  1394     wr.CommitL();
       
  1395     CleanupStack::PopAndDestroy();
       
  1396     
       
  1397     CLbtTriggerConditionArea* cond2= CLbtTriggerConditionArea::NewL( );
       
  1398     CleanupStack::PushL( cond2 );
       
  1399     
       
  1400     RBufReadStream rd;
       
  1401     rd.Open(*buffer);
       
  1402     CleanupClosePushL(rd);    
       
  1403     cond2->InternalizeL(rd);
       
  1404     
       
  1405     CleanupStack::PopAndDestroy();
       
  1406     
       
  1407     buffer->Reset(); 
       
  1408     
       
  1409     CLbtGeoAreaBase* TrigArea=cond2->TriggerArea();
       
  1410            
       
  1411    AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  1412    CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  1413        RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  1414    
       
  1415    CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  1416            
       
  1417    CLbtGeoCell* cell2=NULL;
       
  1418    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1419    {
       
  1420        cell2= static_cast<CLbtGeoCell*> (base);
       
  1421    }    
       
  1422    
       
  1423    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1424    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  1425    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  1426    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  1427    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  1428    
       
  1429    base=Hybridareaarray2[1];
       
  1430            
       
  1431    cell2=NULL;
       
  1432    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1433    {
       
  1434        cell2= static_cast<CLbtGeoCell*> (base);
       
  1435    }    
       
  1436    
       
  1437    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1438    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  1439    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  1440    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  1441    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  1442              
       
  1443    
       
  1444     CleanupStack::PopAndDestroy( 3 );
       
  1445     
       
  1446     return KErrNone;
       
  1447     
       
  1448     }
       
  1449 
       
  1450 // -----------------------------------------------------------------------------
       
  1451 // CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea1L
       
  1452 // Allocates and constructs a new CLbtTriggerFilterByArea object using CLbtGeoHybrid 1
       
  1453 // (other items were commented in a header).
       
  1454 // -----------------------------------------------------------------------------
       
  1455 //
       
  1456 TInt CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea1L( CStifItemParser& /* aItem */ )
       
  1457     {
       
  1458             
       
  1459     CLbtTriggerFilterByArea* areafilter=CLbtTriggerFilterByArea::NewL();   
       
  1460     CleanupStack::PushL( areafilter ); 
       
  1461     
       
  1462     TBuf<4> Networkcountrycode1 = _L("1000");
       
  1463    TBuf<8> Networkidentitycode1 = _L("10000000");
       
  1464    TUint Locationareacode1 = 100;
       
  1465    TUint CellId1 = 100;
       
  1466        
       
  1467    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1468                                                        Networkcountrycode1,
       
  1469                                                        Networkidentitycode1,
       
  1470                                                        Locationareacode1,
       
  1471                                                        CellId1
       
  1472                                                            );
       
  1473    TBuf<4> Networkcountrycode2 = _L("2000");
       
  1474    TBuf<8> Networkidentitycode2 = _L("20000000");
       
  1475    TUint Locationareacode2 = 200;
       
  1476    TUint CellId2 = 200;
       
  1477        
       
  1478    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1479                                                        Networkcountrycode2,
       
  1480                                                        Networkidentitycode2,
       
  1481                                                        Locationareacode2,
       
  1482                                                        CellId2
       
  1483                                                            );
       
  1484    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  1485    Hybridareaarray1.Append(Cellarea1);
       
  1486    Hybridareaarray1.Append(Cellarea2);
       
  1487    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  1488     
       
  1489     areafilter->SetArea(Hybridarea);
       
  1490     
       
  1491   
       
  1492     CLbtGeoAreaBase* filterarea=areafilter->Area();
       
  1493     AssertTrueL(filterarea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  1494             
       
  1495     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(filterarea); 
       
  1496         RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  1497        
       
  1498    CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  1499            
       
  1500    CLbtGeoCell* cell2=NULL;
       
  1501    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1502    {
       
  1503        cell2= static_cast<CLbtGeoCell*> (base);
       
  1504    }    
       
  1505    
       
  1506    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1507    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  1508    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  1509    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  1510    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  1511    
       
  1512    base=Hybridareaarray2[1];
       
  1513            
       
  1514    cell2=NULL;
       
  1515    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1516    {
       
  1517        cell2= static_cast<CLbtGeoCell*> (base);
       
  1518    }    
       
  1519    
       
  1520    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1521    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  1522    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  1523    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  1524    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  1525              
       
  1526     CleanupStack::PopAndDestroy();
       
  1527 
       
  1528     return KErrNone;
       
  1529      }
       
  1530 
       
  1531 // -----------------------------------------------------------------------------
       
  1532 // CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea2L
       
  1533 // Allocates and constructs a new CLbtTriggerFilterByArea object using CLbtGeoHybrid 1
       
  1534 // (other items were commented in a header).
       
  1535 // -----------------------------------------------------------------------------
       
  1536 //
       
  1537 TInt CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea2L( CStifItemParser& /* aItem */ )
       
  1538     {
       
  1539             
       
  1540     CLbtTriggerFilterByArea* areafilter=CLbtTriggerFilterByArea::NewLC();   
       
  1541     
       
  1542     TBuf<4> Networkcountrycode1 = _L("1000");
       
  1543    TBuf<8> Networkidentitycode1 = _L("10000000");
       
  1544    TUint Locationareacode1 = 100;
       
  1545    TUint CellId1 = 100;
       
  1546        
       
  1547    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1548                                                        Networkcountrycode1,
       
  1549                                                        Networkidentitycode1,
       
  1550                                                        Locationareacode1,
       
  1551                                                        CellId1
       
  1552                                                            );
       
  1553    TBuf<4> Networkcountrycode2 = _L("2000");
       
  1554    TBuf<8> Networkidentitycode2 = _L("20000000");
       
  1555    TUint Locationareacode2 = 200;
       
  1556    TUint CellId2 = 200;
       
  1557        
       
  1558    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1559                                                        Networkcountrycode2,
       
  1560                                                        Networkidentitycode2,
       
  1561                                                        Locationareacode2,
       
  1562                                                        CellId2
       
  1563                                                            );
       
  1564    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  1565    Hybridareaarray1.Append(Cellarea1);
       
  1566    Hybridareaarray1.Append(Cellarea2);
       
  1567    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  1568     
       
  1569     areafilter->SetArea(Hybridarea);
       
  1570     
       
  1571   
       
  1572     CLbtGeoAreaBase* filterarea=areafilter->Area();
       
  1573     AssertTrueL(filterarea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  1574             
       
  1575     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(filterarea); 
       
  1576         RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  1577        
       
  1578    CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  1579            
       
  1580    CLbtGeoCell* cell2=NULL;
       
  1581    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1582    {
       
  1583        cell2= static_cast<CLbtGeoCell*> (base);
       
  1584    }    
       
  1585    
       
  1586    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1587    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  1588    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  1589    AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  1590    AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  1591    
       
  1592    base=Hybridareaarray2[1];
       
  1593            
       
  1594    cell2=NULL;
       
  1595    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1596    {
       
  1597        cell2= static_cast<CLbtGeoCell*> (base);
       
  1598    }    
       
  1599    
       
  1600    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1601    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  1602    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  1603    AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  1604    AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  1605              
       
  1606     CleanupStack::PopAndDestroy(1);
       
  1607 
       
  1608     return KErrNone;
       
  1609      }
       
  1610 
       
  1611 
       
  1612 // -----------------------------------------------------------------------------
       
  1613 // CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea3L
       
  1614 // Allocates and constructs a new CLbtTriggerFilterByArea object using CLbtGeoWlan 3
       
  1615 // (other items were commented in a header).
       
  1616 // -----------------------------------------------------------------------------
       
  1617 //
       
  1618 TInt CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea3L( CStifItemParser& /* aItem */ )
       
  1619     {
       
  1620             
       
  1621     TBuf<4> Networkcountrycode1 = _L("1000");
       
  1622       TBuf<8> Networkidentitycode1 = _L("10000000");
       
  1623       TUint Locationareacode1 = 100;
       
  1624       TUint CellId1 = 100;
       
  1625           
       
  1626       CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1627                                                           Networkcountrycode1,
       
  1628                                                           Networkidentitycode1,
       
  1629                                                           Locationareacode1,
       
  1630                                                           CellId1
       
  1631                                                               );
       
  1632       TBuf<4> Networkcountrycode2 = _L("2000");
       
  1633       TBuf<8> Networkidentitycode2 = _L("20000000");
       
  1634       TUint Locationareacode2 = 200;
       
  1635       TUint CellId2 = 200;
       
  1636           
       
  1637       CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1638                                                           Networkcountrycode2,
       
  1639                                                           Networkidentitycode2,
       
  1640                                                           Locationareacode2,
       
  1641                                                           CellId2
       
  1642                                                               );
       
  1643       RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  1644       Hybridareaarray1.Append(Cellarea1);
       
  1645       Hybridareaarray1.Append(Cellarea2);
       
  1646       CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  1647     
       
  1648     CLbtTriggerFilterByArea* areafilter=CLbtTriggerFilterByArea::NewL(Hybridarea); 
       
  1649     CleanupStack::PushL( areafilter ); 
       
  1650   
       
  1651     CLbtGeoAreaBase* filterarea=areafilter->Area();
       
  1652         AssertTrueL(filterarea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  1653                 
       
  1654         CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(filterarea); 
       
  1655             RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  1656            
       
  1657        CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  1658                
       
  1659        CLbtGeoCell* cell2=NULL;
       
  1660        if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1661        {
       
  1662            cell2= static_cast<CLbtGeoCell*> (base);
       
  1663        }    
       
  1664        
       
  1665        AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1666        AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  1667        AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  1668        AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  1669        AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  1670        
       
  1671        base=Hybridareaarray2[1];
       
  1672                
       
  1673        cell2=NULL;
       
  1674        if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1675        {
       
  1676            cell2= static_cast<CLbtGeoCell*> (base);
       
  1677        }    
       
  1678        
       
  1679        AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1680        AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  1681        AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  1682        AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  1683        AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  1684     CleanupStack::PopAndDestroy();
       
  1685 
       
  1686     return KErrNone;
       
  1687      }
       
  1688 // -----------------------------------------------------------------------------
       
  1689 // CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea4L
       
  1690 // Internalize & Externalize(CLbtTriggerFilterByArea).
       
  1691 // (other items were commented in a header).
       
  1692 // -----------------------------------------------------------------------------
       
  1693 //
       
  1694 TInt CTestHybridTriggers::TC_TestCLbtTriggerFilterByArea4L( CStifItemParser& /* aItem */ )
       
  1695     {
       
  1696             
       
  1697     TBuf<4> Networkcountrycode1 = _L("1000");
       
  1698       TBuf<8> Networkidentitycode1 = _L("10000000");
       
  1699       TUint Locationareacode1 = 100;
       
  1700       TUint CellId1 = 100;
       
  1701           
       
  1702       CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1703                                                           Networkcountrycode1,
       
  1704                                                           Networkidentitycode1,
       
  1705                                                           Locationareacode1,
       
  1706                                                           CellId1
       
  1707                                                               );
       
  1708       TBuf<4> Networkcountrycode2 = _L("2000");
       
  1709       TBuf<8> Networkidentitycode2 = _L("20000000");
       
  1710       TUint Locationareacode2 = 200;
       
  1711       TUint CellId2 = 200;
       
  1712           
       
  1713       CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1714                                                           Networkcountrycode2,
       
  1715                                                           Networkidentitycode2,
       
  1716                                                           Locationareacode2,
       
  1717                                                           CellId2
       
  1718                                                               );
       
  1719       RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  1720       Hybridareaarray1.Append(Cellarea1);
       
  1721       Hybridareaarray1.Append(Cellarea2);
       
  1722       CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  1723        
       
  1724     CLbtTriggerFilterByArea* filterarea1= CLbtTriggerFilterByArea::NewL( Hybridarea );
       
  1725     CleanupStack::PushL( filterarea1 );
       
  1726    
       
  1727     CBufFlat* buffer= CBufFlat::NewL(256);
       
  1728     CleanupStack::PushL( buffer );  
       
  1729    
       
  1730     RBufWriteStream wr;
       
  1731     wr.Open(*buffer);
       
  1732     CleanupClosePushL(wr);
       
  1733     filterarea1->ExternalizeL(wr);
       
  1734    
       
  1735     wr.CommitL();
       
  1736     CleanupStack::PopAndDestroy();
       
  1737    
       
  1738     
       
  1739     CLbtTriggerFilterByArea* filterarea2= CLbtTriggerFilterByArea::NewL();
       
  1740    
       
  1741     //Push to cleanup stack
       
  1742     CleanupStack::PushL( filterarea2); 
       
  1743    
       
  1744     RBufReadStream rd;
       
  1745     rd.Open(*buffer);
       
  1746     CleanupClosePushL(rd);
       
  1747    
       
  1748     filterarea2->InternalizeL(rd);
       
  1749    
       
  1750     CleanupStack::PopAndDestroy();
       
  1751    
       
  1752     buffer->Reset();
       
  1753    
       
  1754     CLbtGeoAreaBase* filterareabase=filterarea2->Area();
       
  1755     AssertTrueL(filterareabase->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  1756             
       
  1757     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(filterareabase); 
       
  1758         RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  1759        
       
  1760     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  1761            
       
  1762     CLbtGeoCell* cell2=NULL;
       
  1763     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1764         {
       
  1765        cell2= static_cast<CLbtGeoCell*> (base);
       
  1766         }    
       
  1767    
       
  1768     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1769     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  1770     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  1771     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  1772     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  1773    
       
  1774     base=Hybridareaarray2[1];
       
  1775            
       
  1776     cell2=NULL;
       
  1777     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1778         {
       
  1779        cell2= static_cast<CLbtGeoCell*> (base);
       
  1780         }    
       
  1781    
       
  1782     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1783     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  1784     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  1785     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  1786     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  1787     CleanupStack::Pop(filterarea2);
       
  1788     CleanupStack::Pop(buffer);
       
  1789     CleanupStack::Pop(filterarea1);
       
  1790     return KErrNone;
       
  1791      }
       
  1792 
       
  1793 
       
  1794 // -----------------------------------------------------------------------------
       
  1795 // CTestHybridTriggers::TC_TestCreatetrigger1L
       
  1796 // Creation of hybrid Entry type startup trigger
       
  1797 // (other items were commented in a header).
       
  1798 // -----------------------------------------------------------------------------
       
  1799 //
       
  1800 TInt CTestHybridTriggers ::TC_TestCreatetrigger1L(CStifItemParser& /*aItem*/)
       
  1801     {
       
  1802      RLbtServer lbtserver;
       
  1803      RLbt lbt;
       
  1804      iLog->Log(_L("Before connecting"));
       
  1805      User::LeaveIfError( lbtserver.Connect() );
       
  1806      CleanupClosePushL( lbtserver );
       
  1807      iLog->Log(_L("Connection to RLbtServer Passed "));
       
  1808      User::LeaveIfError( lbt.Open(lbtserver));
       
  1809      iLog->Log(_L("Subsession opened "));
       
  1810      CleanupClosePushL( lbt );
       
  1811      TRAP_IGNORE(lbt.DeleteTriggersL());
       
  1812       //Construct a startup trigger
       
  1813      CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
       
  1814     
       
  1815     //Push to cleanup stack
       
  1816      CleanupStack::PushL( trig );
       
  1817      iLog->Log(_L("Startup Trigger Entry Created "));
       
  1818     
       
  1819     // Set Name
       
  1820      trig->SetNameL(_L("Trigger1"));
       
  1821    
       
  1822      _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  1823   
       
  1824     
       
  1825      TSecureId secureid;
       
  1826      trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  1827        
       
  1828      //set Requestor     
       
  1829      CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  1830      CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  1831      TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  1832      trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  1833     // set condition
       
  1834     
       
  1835      TBuf<4> Networkcountrycode1 = _L("1000");
       
  1836        TBuf<8> Networkidentitycode1 = _L("10000000");
       
  1837        TUint Locationareacode1 = 100;
       
  1838        TUint CellId1 = 100;
       
  1839            
       
  1840        CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1841                                                            Networkcountrycode1,
       
  1842                                                            Networkidentitycode1,
       
  1843                                                            Locationareacode1,
       
  1844                                                            CellId1
       
  1845                                                                );
       
  1846        TBuf<4> Networkcountrycode2 = _L("2000");
       
  1847        TBuf<8> Networkidentitycode2 = _L("20000000");
       
  1848        TUint Locationareacode2 = 200;
       
  1849        TUint CellId2 = 200;
       
  1850            
       
  1851        CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1852                                                            Networkcountrycode2,
       
  1853                                                            Networkidentitycode2,
       
  1854                                                            Locationareacode2,
       
  1855                                                            CellId2
       
  1856                                                                );
       
  1857        RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  1858        Hybridareaarray1.Append(Cellarea1);
       
  1859        Hybridareaarray1.Append(Cellarea2);
       
  1860        CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  1861     
       
  1862     
       
  1863     // ownership of Cellarea object transferred to the condition object
       
  1864      CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  1865                                                  Hybridarea,
       
  1866                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  1867         
       
  1868      trig->SetCondition(condition); // ownership transferred to object
       
  1869     
       
  1870      TLbtTriggerId trigId;
       
  1871         
       
  1872         
       
  1873      CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  1874      CleanupStack::PushL( notifier );
       
  1875     
       
  1876      CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  1877         
       
  1878      notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
       
  1879      wait->Start( );
       
  1880      TInt err =notifier->iStatus.Int(); 
       
  1881      if(err!=KErrNone)
       
  1882          {
       
  1883          User::LeaveIfError(err);
       
  1884          }
       
  1885      iLog->Log(_L("Trigger Created"));
       
  1886     
       
  1887       
       
  1888      CLbtTriggerInfo *Triginfo ;
       
  1889      iLog->Log(_L("Before GetTriggerLC "));
       
  1890     
       
  1891      Triginfo= lbt.GetTriggerLC(trigId);
       
  1892     
       
  1893      if(Triginfo==NULL)
       
  1894      {
       
  1895      CleanupStack::Pop(Triginfo);
       
  1896      CleanupStack::PopAndDestroy( notifier );
       
  1897      CleanupStack::PopAndDestroy( trig );
       
  1898      CleanupStack::Pop( &lbt );
       
  1899      CleanupStack::PopAndDestroy( &lbtserver );
       
  1900     //delete wait;
       
  1901      return KErrNotFound;  
       
  1902      }
       
  1903      else
       
  1904      {
       
  1905      CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  1906      CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  1907      CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  1908      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  1909      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  1910          RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  1911     
       
  1912     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  1913             
       
  1914     CLbtGeoCell* cell2=NULL;
       
  1915     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1916     {
       
  1917         cell2= static_cast<CLbtGeoCell*> (base);
       
  1918     }    
       
  1919     
       
  1920     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1921     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  1922     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  1923     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  1924     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  1925     
       
  1926     base=Hybridareaarray2[1];
       
  1927             
       
  1928     cell2=NULL;
       
  1929     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  1930     {
       
  1931         cell2= static_cast<CLbtGeoCell*> (base);
       
  1932     }    
       
  1933     
       
  1934     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  1935     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  1936     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  1937     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  1938     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  1939      CleanupStack::Pop(Triginfo);
       
  1940      CleanupStack::PopAndDestroy( notifier );
       
  1941      CleanupStack::PopAndDestroy( trig );
       
  1942      CleanupStack::Pop( &lbt );
       
  1943      CleanupStack::PopAndDestroy( &lbtserver );
       
  1944     //delete wait;
       
  1945      return KErrNone;
       
  1946      }
       
  1947    
       
  1948     }
       
  1949 
       
  1950 // -----------------------------------------------------------------------------
       
  1951 // CTestHybridTriggers::TC_TestCreatetrigger2L
       
  1952 // Creation of hybrid Entry type session trigger
       
  1953 // (other items were commented in a header).
       
  1954 // -----------------------------------------------------------------------------
       
  1955 //
       
  1956 TInt CTestHybridTriggers ::TC_TestCreatetrigger2L(CStifItemParser& /*aItem*/)
       
  1957     {
       
  1958      RLbtServer lbtserver;
       
  1959      RLbt lbt;
       
  1960      iLog->Log(_L("Before connecting"));
       
  1961      User::LeaveIfError( lbtserver.Connect() );
       
  1962      CleanupClosePushL( lbtserver );
       
  1963      iLog->Log(_L("Connection to RLbtServer Passed "));
       
  1964      User::LeaveIfError( lbt.Open(lbtserver));
       
  1965      iLog->Log(_L("Subsession opened "));
       
  1966      CleanupClosePushL( lbt );
       
  1967  
       
  1968       //Construct a startup trigger
       
  1969      CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
       
  1970     
       
  1971     //Push to cleanup stack
       
  1972      CleanupStack::PushL( trig );
       
  1973      iLog->Log(_L("Startup Trigger Entry Created "));
       
  1974     
       
  1975     // Set Name
       
  1976      trig->SetNameL(_L("Trigger1"));
       
  1977     
       
  1978      //set Requestor     
       
  1979      CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  1980      CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  1981      TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  1982      trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  1983     // set condition
       
  1984     
       
  1985      TBuf<4> Networkcountrycode1 = _L("1000");
       
  1986        TBuf<8> Networkidentitycode1 = _L("10000000");
       
  1987        TUint Locationareacode1 = 100;
       
  1988        TUint CellId1 = 100;
       
  1989            
       
  1990        CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  1991                                                            Networkcountrycode1,
       
  1992                                                            Networkidentitycode1,
       
  1993                                                            Locationareacode1,
       
  1994                                                            CellId1
       
  1995                                                                );
       
  1996        TBuf<4> Networkcountrycode2 = _L("2000");
       
  1997        TBuf<8> Networkidentitycode2 = _L("20000000");
       
  1998        TUint Locationareacode2 = 200;
       
  1999        TUint CellId2 = 200;
       
  2000            
       
  2001        CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2002                                                            Networkcountrycode2,
       
  2003                                                            Networkidentitycode2,
       
  2004                                                            Locationareacode2,
       
  2005                                                            CellId2
       
  2006                                                                );
       
  2007        RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  2008               Hybridareaarray1.Append(Cellarea1);
       
  2009               Hybridareaarray1.Append(Cellarea2);
       
  2010        CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  2011     
       
  2012     
       
  2013     // ownership of Cellarea object transferred to the condition object
       
  2014      CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  2015                                                  Hybridarea,
       
  2016                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  2017         
       
  2018      trig->SetCondition(condition); // ownership transferred to object
       
  2019     
       
  2020      TLbtTriggerId trigId;
       
  2021         
       
  2022         
       
  2023      CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  2024      CleanupStack::PushL( notifier );
       
  2025     
       
  2026      CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  2027         
       
  2028      notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
       
  2029      wait->Start( );
       
  2030      iLog->Log(_L("Trigger Created"));
       
  2031     
       
  2032       
       
  2033      CLbtTriggerInfo *Triginfo ;
       
  2034      iLog->Log(_L("Before GetTriggerLC "));
       
  2035     
       
  2036      Triginfo= lbt.GetTriggerLC(trigId);
       
  2037     
       
  2038      if(Triginfo==NULL)
       
  2039      {
       
  2040      CleanupStack::Pop(Triginfo);
       
  2041      CleanupStack::PopAndDestroy( notifier );
       
  2042      CleanupStack::PopAndDestroy( trig );
       
  2043      CleanupStack::Pop( &lbt );
       
  2044      CleanupStack::PopAndDestroy( &lbtserver );
       
  2045     //delete wait;
       
  2046      return KErrNotFound;  
       
  2047      }
       
  2048      else
       
  2049      {
       
  2050      CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  2051      CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  2052      CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  2053      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  2054      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  2055          RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  2056     
       
  2057     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  2058             
       
  2059     CLbtGeoCell* cell2=NULL;
       
  2060     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  2061     {
       
  2062         cell2= static_cast<CLbtGeoCell*> (base);
       
  2063     }    
       
  2064     
       
  2065     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  2066     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  2067     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  2068     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  2069     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  2070     
       
  2071     base=Hybridareaarray2[1];
       
  2072             
       
  2073     cell2=NULL;
       
  2074     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  2075     {
       
  2076         cell2= static_cast<CLbtGeoCell*> (base);
       
  2077     }    
       
  2078     
       
  2079     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  2080     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  2081     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  2082     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  2083     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  2084      CleanupStack::Pop(Triginfo);
       
  2085      CleanupStack::PopAndDestroy( notifier );
       
  2086      CleanupStack::PopAndDestroy( trig );
       
  2087      CleanupStack::Pop( &lbt );
       
  2088      CleanupStack::PopAndDestroy( &lbtserver );
       
  2089     //delete wait;
       
  2090      return KErrNone;
       
  2091      }
       
  2092    
       
  2093     }
       
  2094 
       
  2095 // -----------------------------------------------------------------------------
       
  2096 // CTestHybridTriggers::TC_TestCreatetrigger3L
       
  2097 // Creation of hybrid Entry type startup trigger with one circular area and one cellular area
       
  2098 // (other items were commented in a header).
       
  2099 // -----------------------------------------------------------------------------
       
  2100 //
       
  2101 TInt CTestHybridTriggers ::TC_TestCreatetrigger3L(CStifItemParser& /*aItem*/)
       
  2102     {
       
  2103      RLbtServer lbtserver;
       
  2104      RLbt lbt;
       
  2105      iLog->Log(_L("Before connecting"));
       
  2106      User::LeaveIfError( lbtserver.Connect() );
       
  2107      CleanupClosePushL( lbtserver );
       
  2108      iLog->Log(_L("Connection to RLbtServer Passed "));
       
  2109      User::LeaveIfError( lbt.Open(lbtserver));
       
  2110      iLog->Log(_L("Subsession opened "));
       
  2111      CleanupClosePushL( lbt );
       
  2112  
       
  2113       //Construct a startup trigger
       
  2114      CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
       
  2115     
       
  2116     //Push to cleanup stack
       
  2117      CleanupStack::PushL( trig );
       
  2118      iLog->Log(_L("Startup Trigger Entry Created "));
       
  2119     
       
  2120     // Set Name
       
  2121      trig->SetNameL(_L("Trigger1"));
       
  2122    
       
  2123      _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  2124   
       
  2125      TSecureId secureid;
       
  2126      trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  2127        
       
  2128      //set Requestor     
       
  2129      CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  2130      CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  2131      TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  2132      trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  2133     // set condition
       
  2134     
       
  2135      TBuf<4> Networkcountrycode1 = _L("1000");
       
  2136      TBuf<8> Networkidentitycode1 = _L("10000000");
       
  2137      TUint Locationareacode1 = 100;
       
  2138      TUint CellId1 = 100;
       
  2139        
       
  2140      CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2141                                                        Networkcountrycode1,
       
  2142                                                        Networkidentitycode1,
       
  2143                                                        Locationareacode1,
       
  2144                                                        CellId1
       
  2145                                                            );
       
  2146        TCoordinate coordinate(62.5285,23.9385);
       
  2147        TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6);            
       
  2148        CLbtGeoCircle* circlearea=CLbtGeoCircle::NewL(coordinate,1000);
       
  2149        RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  2150               Hybridareaarray1.Append(Cellarea1);
       
  2151               Hybridareaarray1.Append(circlearea);
       
  2152        CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  2153     
       
  2154     
       
  2155     // ownership of Cellarea object transferred to the condition object
       
  2156      CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  2157                                                  Hybridarea,
       
  2158                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  2159         
       
  2160      trig->SetCondition(condition); // ownership transferred to object
       
  2161     
       
  2162      TLbtTriggerId trigId;
       
  2163         
       
  2164         
       
  2165      CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  2166      CleanupStack::PushL( notifier );
       
  2167     
       
  2168      CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  2169         
       
  2170      notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
       
  2171      wait->Start( );
       
  2172      iLog->Log(_L("Trigger Created"));
       
  2173     
       
  2174       
       
  2175      CLbtTriggerInfo *Triginfo ;
       
  2176      iLog->Log(_L("Before GetTriggerLC "));
       
  2177     
       
  2178      Triginfo= lbt.GetTriggerLC(trigId);
       
  2179     
       
  2180      if(Triginfo==NULL)
       
  2181      {
       
  2182      CleanupStack::Pop(Triginfo);
       
  2183      CleanupStack::PopAndDestroy( notifier );
       
  2184      CleanupStack::PopAndDestroy( trig );
       
  2185      CleanupStack::Pop( &lbt );
       
  2186      CleanupStack::PopAndDestroy( &lbtserver );
       
  2187     //delete wait;
       
  2188      return KErrNotFound;  
       
  2189      }
       
  2190      else
       
  2191      {
       
  2192      CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  2193      CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  2194      CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  2195      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  2196      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  2197          RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  2198     
       
  2199     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  2200             
       
  2201     CLbtGeoCell* cell2=NULL;
       
  2202     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  2203     {
       
  2204         cell2= static_cast<CLbtGeoCell*> (base);
       
  2205     }    
       
  2206     
       
  2207     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  2208     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  2209     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  2210     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  2211     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  2212     
       
  2213     base=Hybridareaarray2[1];
       
  2214                     
       
  2215     CLbtGeoCircle* circle2=NULL;
       
  2216     if(base->Type()==CLbtGeoAreaBase::ECircle)
       
  2217     {
       
  2218     circle2= static_cast<CLbtGeoCircle*> (base);
       
  2219     }    
       
  2220     
       
  2221     TCoordinate center2 = circle2->Center();
       
  2222     TReal32 distance;
       
  2223     center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
       
  2224     if(distance!=0)
       
  2225     {
       
  2226         return KErrGeneral;
       
  2227     }
       
  2228     TReal radius = circle2->Radius();
       
  2229     if(radius != 1000)
       
  2230     {
       
  2231         return KErrGeneral;
       
  2232     }
       
  2233      CleanupStack::Pop(Triginfo);
       
  2234      CleanupStack::PopAndDestroy( notifier );
       
  2235      CleanupStack::PopAndDestroy( trig );
       
  2236      CleanupStack::Pop( &lbt );
       
  2237      CleanupStack::PopAndDestroy( &lbtserver );
       
  2238     //delete wait;
       
  2239      return KErrNone;
       
  2240      }
       
  2241    
       
  2242     }
       
  2243 
       
  2244 // -----------------------------------------------------------------------------
       
  2245 // CTestHybridTriggers::TC_TestCreatetrigger4L
       
  2246 // Creation of hybrid Entry type session trigger with one circular area and one cellular area
       
  2247 // (other items were commented in a header).
       
  2248 // -----------------------------------------------------------------------------
       
  2249 //
       
  2250 TInt CTestHybridTriggers ::TC_TestCreatetrigger4L(CStifItemParser& /*aItem*/)
       
  2251     {
       
  2252     RLbtServer lbtserver;
       
  2253          RLbt lbt;
       
  2254          iLog->Log(_L("Before connecting"));
       
  2255          User::LeaveIfError( lbtserver.Connect() );
       
  2256          CleanupClosePushL( lbtserver );
       
  2257          iLog->Log(_L("Connection to RLbtServer Passed "));
       
  2258          User::LeaveIfError( lbt.Open(lbtserver));
       
  2259          iLog->Log(_L("Subsession opened "));
       
  2260          CleanupClosePushL( lbt );
       
  2261      
       
  2262           //Construct a startup trigger
       
  2263          CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
       
  2264         
       
  2265         //Push to cleanup stack
       
  2266          CleanupStack::PushL( trig );
       
  2267          iLog->Log(_L("Startup Trigger Entry Created "));
       
  2268         
       
  2269         // Set Name
       
  2270          trig->SetNameL(_L("Trigger1"));
       
  2271        
       
  2272                   
       
  2273          //set Requestor     
       
  2274          CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  2275          CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  2276          TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  2277          trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  2278         // set condition
       
  2279         
       
  2280          TBuf<4> Networkcountrycode1 = _L("1000");
       
  2281          TBuf<8> Networkidentitycode1 = _L("10000000");
       
  2282          TUint Locationareacode1 = 100;
       
  2283          TUint CellId1 = 100;
       
  2284            
       
  2285          CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2286                                                            Networkcountrycode1,
       
  2287                                                            Networkidentitycode1,
       
  2288                                                            Locationareacode1,
       
  2289                                                            CellId1
       
  2290                                                                );
       
  2291            TCoordinate coordinate(62.5285,23.9385);
       
  2292            TestModuleIf().SetExitReason( CTestModuleIf::EPanic, 6);            
       
  2293            CLbtGeoCircle* circlearea=CLbtGeoCircle::NewL(coordinate,1000);
       
  2294            RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  2295                          Hybridareaarray1.Append(Cellarea1);
       
  2296                          Hybridareaarray1.Append(circlearea);
       
  2297            CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  2298         
       
  2299         
       
  2300         // ownership of Cellarea object transferred to the condition object
       
  2301          CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  2302                                                      Hybridarea,
       
  2303                                                     CLbtTriggerConditionArea::EFireOnEnter);
       
  2304             
       
  2305          trig->SetCondition(condition); // ownership transferred to object
       
  2306         
       
  2307          TLbtTriggerId trigId;
       
  2308             
       
  2309             
       
  2310          CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  2311          CleanupStack::PushL( notifier );
       
  2312         
       
  2313          CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  2314             
       
  2315          notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
       
  2316          wait->Start( );
       
  2317          iLog->Log(_L("Trigger Created"));
       
  2318         
       
  2319           
       
  2320          CLbtTriggerInfo *Triginfo ;
       
  2321          iLog->Log(_L("Before GetTriggerLC "));
       
  2322         
       
  2323          Triginfo= lbt.GetTriggerLC(trigId);
       
  2324         
       
  2325          if(Triginfo==NULL)
       
  2326          {
       
  2327          CleanupStack::Pop(Triginfo);
       
  2328          CleanupStack::PopAndDestroy( notifier );
       
  2329          CleanupStack::PopAndDestroy( trig );
       
  2330          CleanupStack::Pop( &lbt );
       
  2331          CleanupStack::PopAndDestroy( &lbtserver );
       
  2332         //delete wait;
       
  2333          return KErrNotFound;  
       
  2334          }
       
  2335          else
       
  2336          {
       
  2337          CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  2338          CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  2339          CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  2340          AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  2341          CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  2342              RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  2343         
       
  2344         CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  2345                 
       
  2346         CLbtGeoCell* cell2=NULL;
       
  2347         if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  2348         {
       
  2349             cell2= static_cast<CLbtGeoCell*> (base);
       
  2350         }    
       
  2351         
       
  2352         AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  2353         AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  2354         AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  2355         AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  2356         AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  2357         
       
  2358         base=Hybridareaarray2[1];
       
  2359                         
       
  2360         CLbtGeoCircle* circle2=NULL;
       
  2361         if(base->Type()==CLbtGeoAreaBase::ECircle)
       
  2362         {
       
  2363         circle2= static_cast<CLbtGeoCircle*> (base);
       
  2364         }    
       
  2365         
       
  2366         TCoordinate center2 = circle2->Center();
       
  2367         TReal32 distance;
       
  2368         center2.Distance(TCoordinate( 62.5285,23.9385,0 ),distance);
       
  2369         if(distance!=0)
       
  2370         {
       
  2371             return KErrGeneral;
       
  2372         }
       
  2373         TReal radius = circle2->Radius();
       
  2374         if(radius != 1000)
       
  2375         {
       
  2376             return KErrGeneral;
       
  2377         }
       
  2378          CleanupStack::Pop(Triginfo);
       
  2379          CleanupStack::PopAndDestroy( notifier );
       
  2380          CleanupStack::PopAndDestroy( trig );
       
  2381          CleanupStack::Pop( &lbt );
       
  2382          CleanupStack::PopAndDestroy( &lbtserver );
       
  2383         //delete wait;
       
  2384          return KErrNone;
       
  2385          }
       
  2386    
       
  2387     }
       
  2388 
       
  2389 // -----------------------------------------------------------------------------
       
  2390 // CTestHybridTriggers::TC_TestDeleteTrigger1L
       
  2391 // Deletion of Hybrid startup trigger
       
  2392 // (other items were commented in a header).
       
  2393 // -----------------------------------------------------------------------------
       
  2394 //
       
  2395 TInt CTestHybridTriggers ::TC_TestDeleteTrigger1L(CStifItemParser& /*aItem*/)
       
  2396     {
       
  2397      RLbtServer lbtserver;
       
  2398      RLbt lbt;
       
  2399      iLog->Log(_L("Before connecting"));
       
  2400      User::LeaveIfError( lbtserver.Connect() );
       
  2401      CleanupClosePushL( lbtserver );
       
  2402      iLog->Log(_L("Connection to RLbtServer Passed "));
       
  2403      User::LeaveIfError( lbt.Open(lbtserver));
       
  2404      iLog->Log(_L("Subsession opened "));
       
  2405      CleanupClosePushL( lbt );
       
  2406  
       
  2407  
       
  2408       //Construct a startup trigger
       
  2409     CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
       
  2410     
       
  2411     //Push to cleanup stack
       
  2412     CleanupStack::PushL( trig );
       
  2413     iLog->Log(_L("Startup Trigger Entry Created "));
       
  2414     
       
  2415     // Set Name
       
  2416     trig->SetNameL(_L("Trigger1"));
       
  2417    
       
  2418     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  2419    
       
  2420     TSecureId secureid;
       
  2421     trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  2422     TBuf<4> Networkcountrycode1 = _L("1000");
       
  2423         TBuf<8> Networkidentitycode1 = _L("10000000");
       
  2424         TUint Locationareacode1 = 100;
       
  2425         TUint CellId1 = 100;   
       
  2426     // set condition
       
  2427     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2428                                                            Networkcountrycode1,
       
  2429                                                            Networkidentitycode1,
       
  2430                                                            Locationareacode1,
       
  2431                                                            CellId1
       
  2432                                                                );
       
  2433     TBuf<4> Networkcountrycode2 = _L("2000");
       
  2434     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  2435     TUint Locationareacode2 = 200;
       
  2436     TUint CellId2 = 200;
       
  2437        
       
  2438     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2439                                                        Networkcountrycode2,
       
  2440                                                        Networkidentitycode2,
       
  2441                                                        Locationareacode2,
       
  2442                                                        CellId2
       
  2443                                                            );
       
  2444     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  2445                   Hybridareaarray1.Append(Cellarea1);
       
  2446                   Hybridareaarray1.Append(Cellarea2);
       
  2447     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  2448     // ownership of Cellarea object transferred to the condition object
       
  2449     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  2450                                                 Hybridarea,
       
  2451                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  2452         
       
  2453     trig->SetCondition(condition); // ownership transferred to object
       
  2454 
       
  2455     //set Requestor     
       
  2456     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  2457     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  2458     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  2459     trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  2460     TLbtTriggerId trigId;
       
  2461         
       
  2462         
       
  2463     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  2464     CleanupStack::PushL( notifier );
       
  2465     
       
  2466     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  2467         
       
  2468     notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
       
  2469     wait->Start( );
       
  2470     iLog->Log(_L("Trigger Created"));
       
  2471     lbt.DeleteTriggerL(trigId);
       
  2472     
       
  2473    // CLbtTriggerInfo *Triginfo ;
       
  2474     iLog->Log(_L("Before GetTriggerLC "));
       
  2475     
       
  2476     TRAPD(error, lbt.GetTriggerLC(trigId);CleanupStack::PopAndDestroy(  ););
       
  2477     
       
  2478     if(error==KErrNotFound)
       
  2479     {
       
  2480     CleanupStack::PopAndDestroy( notifier );
       
  2481     CleanupStack::PopAndDestroy( trig );
       
  2482     CleanupStack::Pop( &lbt );
       
  2483     CleanupStack::PopAndDestroy( &lbtserver );
       
  2484     //delete wait;
       
  2485     return KErrNone;    
       
  2486     }
       
  2487     else
       
  2488     {
       
  2489     CleanupStack::PopAndDestroy( notifier );
       
  2490     CleanupStack::PopAndDestroy( trig );
       
  2491     CleanupStack::Pop( &lbt );
       
  2492     CleanupStack::PopAndDestroy( &lbtserver );
       
  2493     //delete wait;
       
  2494     return KErrGeneral;
       
  2495     }
       
  2496     }
       
  2497 
       
  2498 // -----------------------------------------------------------------------------
       
  2499 // CTestHybridTriggers::TC_TestDeleteTrigger2L
       
  2500 // Deletion of Hybrid session trigger
       
  2501 // (other items were commented in a header).
       
  2502 // -----------------------------------------------------------------------------
       
  2503 //
       
  2504 TInt CTestHybridTriggers ::TC_TestDeleteTrigger2L(CStifItemParser& /*aItem*/)
       
  2505     {
       
  2506      RLbtServer lbtserver;
       
  2507      RLbt lbt;
       
  2508      iLog->Log(_L("Before connecting"));
       
  2509      User::LeaveIfError( lbtserver.Connect() );
       
  2510      CleanupClosePushL( lbtserver );
       
  2511      iLog->Log(_L("Connection to RLbtServer Passed "));
       
  2512      User::LeaveIfError( lbt.Open(lbtserver));
       
  2513      iLog->Log(_L("Subsession opened "));
       
  2514      CleanupClosePushL( lbt );
       
  2515  
       
  2516  
       
  2517       //Construct a startup trigger
       
  2518      CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
       
  2519     
       
  2520     //Push to cleanup stack
       
  2521     CleanupStack::PushL( trig );
       
  2522     iLog->Log(_L("Startup Trigger Entry Created "));
       
  2523     
       
  2524     // Set Name
       
  2525     trig->SetNameL(_L("Trigger1"));
       
  2526    
       
  2527    
       
  2528     // set condition
       
  2529     TBuf<4> Networkcountrycode1 = _L("1000");
       
  2530     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  2531     TUint Locationareacode1 = 100;
       
  2532     TUint CellId1 = 100;
       
  2533        
       
  2534     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2535                                                        Networkcountrycode1,
       
  2536                                                        Networkidentitycode1,
       
  2537                                                        Locationareacode1,
       
  2538                                                        CellId1
       
  2539                                                            );
       
  2540     TBuf<4> Networkcountrycode2 = _L("2000");
       
  2541     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  2542     TUint Locationareacode2 = 200;
       
  2543     TUint CellId2 = 200;
       
  2544        
       
  2545     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2546                                                        Networkcountrycode2,
       
  2547                                                        Networkidentitycode2,
       
  2548                                                        Locationareacode2,
       
  2549                                                        CellId2
       
  2550                                                            );
       
  2551     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  2552                       Hybridareaarray1.Append(Cellarea1);
       
  2553                       Hybridareaarray1.Append(Cellarea2);
       
  2554     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  2555      
       
  2556     // ownership of Cellarea object transferred to the condition object
       
  2557     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  2558                                                 Hybridarea,
       
  2559                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  2560         
       
  2561     trig->SetCondition(condition); // ownership transferred to object
       
  2562 
       
  2563     //set Requestor     
       
  2564     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  2565     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  2566     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  2567     trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  2568     TLbtTriggerId trigId;
       
  2569         
       
  2570         
       
  2571     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  2572     CleanupStack::PushL( notifier );
       
  2573     
       
  2574     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  2575         
       
  2576     notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
       
  2577     wait->Start( );
       
  2578     iLog->Log(_L("Trigger Created"));
       
  2579     lbt.DeleteTriggerL(trigId);
       
  2580     
       
  2581   //  CLbtTriggerInfo *Triginfo ;
       
  2582     iLog->Log(_L("Before GetTriggerLC "));
       
  2583     
       
  2584     TRAPD(error, lbt.GetTriggerLC(trigId);CleanupStack::PopAndDestroy(  ););
       
  2585     
       
  2586     if(error==KErrNotFound)
       
  2587     {
       
  2588     CleanupStack::PopAndDestroy( notifier );
       
  2589     CleanupStack::PopAndDestroy( trig );
       
  2590     CleanupStack::Pop( &lbt );
       
  2591     CleanupStack::PopAndDestroy( &lbtserver );
       
  2592     //delete wait;
       
  2593     return KErrNone;    
       
  2594     }
       
  2595     else
       
  2596     {
       
  2597     CleanupStack::PopAndDestroy( notifier );
       
  2598     CleanupStack::PopAndDestroy( trig );
       
  2599     CleanupStack::Pop( &lbt );
       
  2600     CleanupStack::PopAndDestroy( &lbtserver );
       
  2601     //delete wait;
       
  2602     return KErrGeneral;
       
  2603     }
       
  2604     }
       
  2605 
       
  2606 // -----------------------------------------------------------------------------
       
  2607 // CTestHybridTriggers::TC_TestDeleteTriggers1L
       
  2608 // Deleting triggers using NULL filter synchronously
       
  2609 // (other items were commented in a header).
       
  2610 // -----------------------------------------------------------------------------
       
  2611 //
       
  2612 TInt CTestHybridTriggers ::TC_TestDeleteTriggers1L(CStifItemParser& /*aItem*/)
       
  2613     {
       
  2614     RLbtServer lbtserver;
       
  2615     RLbt lbt;
       
  2616     
       
  2617     User::LeaveIfError( lbtserver.Connect() );
       
  2618     CleanupClosePushL( lbtserver );
       
  2619     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  2620     CleanupClosePushL( lbt );
       
  2621      
       
  2622     TRAP_IGNORE(lbt.DeleteTriggersL());
       
  2623       //Construct triggers
       
  2624     CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
       
  2625     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
       
  2626     
       
  2627     //Push to cleanup stack
       
  2628     CleanupStack::PushL( trig1 );
       
  2629     CleanupStack::PushL( trig2 );
       
  2630         
       
  2631     trig1->SetNameL(_L("Trigger1"));
       
  2632     trig2->SetNameL(_L("Trigger2"));
       
  2633     trig1->SetState(CLbtTriggerEntry::EStateDisabled);
       
  2634     trig2->SetState(CLbtTriggerEntry::EStateEnabled);
       
  2635     TBuf<4> Networkcountrycode1 = _L("1000");
       
  2636     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  2637     TUint Locationareacode1 = 100;
       
  2638     TUint CellId1 = 100;
       
  2639        
       
  2640     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2641                                                        Networkcountrycode1,
       
  2642                                                        Networkidentitycode1,
       
  2643                                                        Locationareacode1,
       
  2644                                                        CellId1
       
  2645                                                            );
       
  2646     TBuf<4> Networkcountrycode2 = _L("2000");
       
  2647     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  2648     TUint Locationareacode2 = 200;
       
  2649     TUint CellId2 = 200;
       
  2650        
       
  2651     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2652                                                        Networkcountrycode2,
       
  2653                                                        Networkidentitycode2,
       
  2654                                                        Locationareacode2,
       
  2655                                                        CellId2
       
  2656                                                            );
       
  2657                                                            
       
  2658     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  2659       Hybridareaarray1.Append(Cellarea1);
       
  2660       Hybridareaarray1.Append(Cellarea2);
       
  2661     CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  2662     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  2663         
       
  2664     CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
       
  2665     CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
       
  2666     
       
  2667     trig1->SetCondition(condn1);
       
  2668     trig2->SetCondition(condn2);
       
  2669     //set Requestor     
       
  2670     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  2671     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  2672     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  2673     trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  2674     trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  2675     
       
  2676     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  2677     CleanupStack::PushL( notifier );
       
  2678     
       
  2679     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  2680         
       
  2681     TLbtTriggerId trigId1,trigId2;
       
  2682     notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
       
  2683     wait->Start( );
       
  2684     
       
  2685     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  2686       
       
  2687     TSecureId secureid;
       
  2688     trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  2689     notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
       
  2690     wait->Start( );
       
  2691      
       
  2692     lbt.DeleteTriggersL();
       
  2693     
       
  2694 //    CLbtTriggerInfo* Triginfo=NULL;
       
  2695     TRAPD(error,  lbt.GetTriggerLC(trigId1);CleanupStack::PopAndDestroy(  ));
       
  2696     TRAPD(error2, lbt.GetTriggerLC(trigId2);CleanupStack::PopAndDestroy(  ));
       
  2697     if(error==KErrNotFound && error2==KErrNotFound)
       
  2698     {
       
  2699     CleanupStack::PopAndDestroy( notifier );
       
  2700     CleanupStack::Pop( trig2 );
       
  2701     CleanupStack::PopAndDestroy( trig1 );
       
  2702     CleanupStack::PopAndDestroy( &lbt );
       
  2703     CleanupStack::PopAndDestroy( &lbtserver );
       
  2704     //delete wait;
       
  2705     return KErrNone;    
       
  2706     }
       
  2707     else
       
  2708     {
       
  2709     CleanupStack::PopAndDestroy( notifier );
       
  2710     CleanupStack::Pop( trig2 );
       
  2711     CleanupStack::PopAndDestroy( trig1 );
       
  2712     CleanupStack::PopAndDestroy( &lbt );
       
  2713     CleanupStack::PopAndDestroy( &lbtserver );
       
  2714     //delete wait;
       
  2715     return KErrGeneral;
       
  2716     }
       
  2717     }
       
  2718 
       
  2719 // -----------------------------------------------------------------------------
       
  2720 // CTestHybridTriggers::TC_TestDeleteTriggers2L
       
  2721 // Deleting triggers in given Cellular using NULL filter asynchronously
       
  2722 // (other items were commented in a header).
       
  2723 // -----------------------------------------------------------------------------
       
  2724 //
       
  2725 TInt CTestHybridTriggers ::TC_TestDeleteTriggers2L(CStifItemParser& /*aItem*/)
       
  2726     {
       
  2727     RLbtServer lbtserver;
       
  2728     RLbt lbt;
       
  2729     
       
  2730     User::LeaveIfError( lbtserver.Connect() );
       
  2731     CleanupClosePushL( lbtserver );
       
  2732     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  2733     CleanupClosePushL( lbt );
       
  2734      
       
  2735     TRAP_IGNORE(lbt.DeleteTriggersL());
       
  2736       //Construct triggers
       
  2737     CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
       
  2738     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
       
  2739     
       
  2740     //Push to cleanup stack
       
  2741     CleanupStack::PushL( trig1 );
       
  2742     CleanupStack::PushL( trig2 );
       
  2743         
       
  2744     trig1->SetNameL(_L("Trigger1"));
       
  2745     trig2->SetNameL(_L("Trigger2"));
       
  2746     trig1->SetState(CLbtTriggerEntry::EStateDisabled);
       
  2747     trig2->SetState(CLbtTriggerEntry::EStateEnabled);
       
  2748      
       
  2749     TBuf<4> Networkcountrycode1 = _L("1000");
       
  2750     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  2751     TUint Locationareacode1 = 100;
       
  2752     TUint CellId1 = 100;
       
  2753        
       
  2754     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2755                                                        Networkcountrycode1,
       
  2756                                                        Networkidentitycode1,
       
  2757                                                        Locationareacode1,
       
  2758                                                        CellId1
       
  2759                                                            );
       
  2760     TBuf<4> Networkcountrycode2 = _L("2000");
       
  2761     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  2762     TUint Locationareacode2 = 200;
       
  2763     TUint CellId2 = 200;
       
  2764        
       
  2765     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2766                                                        Networkcountrycode2,
       
  2767                                                        Networkidentitycode2,
       
  2768                                                        Locationareacode2,
       
  2769                                                        CellId2
       
  2770                                                            );
       
  2771     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  2772                       Hybridareaarray1.Append(Cellarea1);
       
  2773                       Hybridareaarray1.Append(Cellarea2);
       
  2774     CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  2775     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  2776 
       
  2777     CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
       
  2778     CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
       
  2779     
       
  2780     trig1->SetCondition(condn1);
       
  2781     trig2->SetCondition(condn2);
       
  2782     //set Requestor     
       
  2783     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  2784     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  2785     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  2786     trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  2787     trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  2788     
       
  2789     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  2790     CleanupStack::PushL( notifier );
       
  2791     
       
  2792     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  2793         
       
  2794     TLbtTriggerId trigId1,trigId2;
       
  2795     notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
       
  2796     wait->Start( );
       
  2797     
       
  2798     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  2799       
       
  2800     TSecureId secureid;
       
  2801     trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  2802     notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
       
  2803     wait->Start( );
       
  2804     
       
  2805     notifier->DeleteFilteredTriggers(lbt,NULL,wait);
       
  2806     wait->Start();
       
  2807 //    CLbtTriggerInfo* Triginfo=NULL;
       
  2808     TRAPD(error, lbt.GetTriggerLC(trigId1);CleanupStack::PopAndDestroy(  ));
       
  2809     TRAPD(error2, lbt.GetTriggerLC(trigId2);CleanupStack::PopAndDestroy(  ));
       
  2810     if(error==KErrNotFound && error2==KErrNotFound)
       
  2811     {
       
  2812     CleanupStack::PopAndDestroy( notifier );
       
  2813     CleanupStack::Pop( trig2 );
       
  2814     CleanupStack::PopAndDestroy( trig1 );
       
  2815     CleanupStack::PopAndDestroy( &lbt );
       
  2816     CleanupStack::PopAndDestroy( &lbtserver );
       
  2817     //delete wait;
       
  2818     return KErrNone;    
       
  2819     }
       
  2820     else
       
  2821     {
       
  2822     CleanupStack::PopAndDestroy( notifier );
       
  2823     CleanupStack::Pop( trig2 );
       
  2824     CleanupStack::PopAndDestroy( trig1 );
       
  2825     CleanupStack::PopAndDestroy( &lbt );
       
  2826     CleanupStack::PopAndDestroy( &lbtserver );
       
  2827     //delete wait;
       
  2828     return KErrGeneral;
       
  2829     }
       
  2830     }
       
  2831 
       
  2832 // -----------------------------------------------------------------------------
       
  2833 // CTestHybridTriggers::TC_TestDeleteTriggers3L
       
  2834 // Deleting triggers using Area filter  constructed using Multiple CGI Area synchronously
       
  2835 // (other items were commented in a header).
       
  2836 // -----------------------------------------------------------------------------
       
  2837 //
       
  2838 TInt CTestHybridTriggers ::TC_TestDeleteTriggers3L(CStifItemParser& /*aItem*/)
       
  2839     {
       
  2840     return TC_TestDeleteTriggers3L();
       
  2841     }
       
  2842 
       
  2843 // -----------------------------------------------------------------------------
       
  2844 // CTestHybridTriggers::TC_TestDeleteTriggers4L
       
  2845 // Deleting triggers in given Cellular using Area filter asynchronously
       
  2846 // (other items were commented in a header).
       
  2847 // -----------------------------------------------------------------------------
       
  2848 //
       
  2849 TInt CTestHybridTriggers ::TC_TestDeleteTriggers4L(CStifItemParser& /*aItem*/)
       
  2850     {
       
  2851     return TC_TestDeleteTriggers4L();
       
  2852     }
       
  2853 
       
  2854 // -----------------------------------------------------------------------------
       
  2855 // CTestHybridTriggers::TC_TestDeleteTriggers3L
       
  2856 // Deleting triggers using Area filter  constructed using Multiple CGI Area synchronously(when both the cells are not matching)
       
  2857 // (other items were commented in a header).
       
  2858 // -----------------------------------------------------------------------------
       
  2859 //
       
  2860 TInt CTestHybridTriggers ::TC_TestDeleteTriggers5L(CStifItemParser& /*aItem*/)
       
  2861     {
       
  2862     return TC_TestDeleteTriggers5L();
       
  2863     }
       
  2864 
       
  2865 // -----------------------------------------------------------------------------
       
  2866 // CTestHybridTriggers::TC_TestDeleteTriggers6L
       
  2867 // Deleting triggers in given Hybrid area using Area filter asynchronously(when both the cells are not matching)
       
  2868 // (other items were commented in a header).
       
  2869 // -----------------------------------------------------------------------------
       
  2870 //
       
  2871 TInt CTestHybridTriggers ::TC_TestDeleteTriggers6L(CStifItemParser& /*aItem*/)
       
  2872     {
       
  2873     return TC_TestDeleteTriggers6L();
       
  2874     }
       
  2875 
       
  2876 // -----------------------------------------------------------------------------
       
  2877 // CTestHybridTriggers::TC_TestDeleteTriggers7L
       
  2878 // Deleting triggers using Area filter  constructed using Multiple CGI Area synchronously(when one of the cells are not matching)
       
  2879 // (other items were commented in a header).
       
  2880 // -----------------------------------------------------------------------------
       
  2881 //
       
  2882 TInt CTestHybridTriggers ::TC_TestDeleteTriggers7L(CStifItemParser& /*aItem*/)
       
  2883     {
       
  2884     return TC_TestDeleteTriggers7L();
       
  2885     }
       
  2886 
       
  2887 // -----------------------------------------------------------------------------
       
  2888 // CTestHybridTriggers::TC_TestDeleteTriggers8L
       
  2889 // Deleting triggers in given Hybrid using Area filter asynchronously(when one of the cells are not matching)
       
  2890 // (other items were commented in a header).
       
  2891 // -----------------------------------------------------------------------------
       
  2892 //
       
  2893 TInt CTestHybridTriggers ::TC_TestDeleteTriggers8L(CStifItemParser& /*aItem*/)
       
  2894     {
       
  2895     return TC_TestDeleteTriggers8L();
       
  2896     }
       
  2897 
       
  2898 // -----------------------------------------------------------------------------
       
  2899 // CTestHybridTriggers::TC_TestDeleteTriggers9L
       
  2900 // Deleting triggers using composite filter  constructed using Multiple CGI Area synchronously
       
  2901 // (other items were commented in a header).
       
  2902 // -----------------------------------------------------------------------------
       
  2903 //
       
  2904 TInt CTestHybridTriggers ::TC_TestDeleteTriggers9L(CStifItemParser& /*aItem*/)
       
  2905     {
       
  2906     return TC_TestDeleteTriggers9L();
       
  2907     }
       
  2908 
       
  2909 // -----------------------------------------------------------------------------
       
  2910 // CTestHybridTriggers::TC_TestDeleteTriggers10L
       
  2911 // Deleting triggers in given Hybrid using composite filter asynchronously
       
  2912 // (other items were commented in a header).
       
  2913 // -----------------------------------------------------------------------------
       
  2914 //
       
  2915 TInt CTestHybridTriggers ::TC_TestDeleteTriggers10L(CStifItemParser& /*aItem*/)
       
  2916     {
       
  2917     return TC_TestDeleteTriggers10L();
       
  2918     }
       
  2919 
       
  2920 // -----------------------------------------------------------------------------
       
  2921 // CTestHybridTriggers::TC_TestDeleteTriggers11L
       
  2922 // Deleting triggers using composite filter  constructed using Two Multiple CGI Area filters synchronously
       
  2923 // (other items were commented in a header).
       
  2924 // -----------------------------------------------------------------------------
       
  2925 //
       
  2926 TInt CTestHybridTriggers ::TC_TestDeleteTriggers11L(CStifItemParser& /*aItem*/)
       
  2927     {
       
  2928     return TC_TestDeleteTriggers11L();
       
  2929     }
       
  2930 
       
  2931 // -----------------------------------------------------------------------------
       
  2932 // CTestHybridTriggers::TC_TestDeleteTriggers12L
       
  2933 // Deleting triggers using composite filter  constructed using Two Multiple CGI Area filters asynchronously
       
  2934 // (other items were commented in a header).
       
  2935 // -----------------------------------------------------------------------------
       
  2936 //
       
  2937 TInt CTestHybridTriggers ::TC_TestDeleteTriggers12L(CStifItemParser& /*aItem*/)
       
  2938     {
       
  2939     return TC_TestDeleteTriggers12L();
       
  2940     
       
  2941     }
       
  2942 
       
  2943 
       
  2944 
       
  2945 // -----------------------------------------------------------------------------
       
  2946 // CTestHybridTriggers::TC_TestGetTriggers5L
       
  2947 // listing triggers  using NULL filter synchronously
       
  2948 // (other items were commented in a header).
       
  2949 // -----------------------------------------------------------------------------
       
  2950 //
       
  2951 TInt CTestHybridTriggers ::TC_TestGetTriggers1L(CStifItemParser& /*aItem*/)
       
  2952     {
       
  2953     RLbtServer lbtserver;
       
  2954     RLbt lbt;
       
  2955     
       
  2956     User::LeaveIfError( lbtserver.Connect() );
       
  2957     CleanupClosePushL( lbtserver );
       
  2958     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  2959     CleanupClosePushL( lbt );
       
  2960     TRAP_IGNORE(lbt.DeleteTriggersL());
       
  2961  
       
  2962       //Construct triggers
       
  2963     CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
       
  2964     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
       
  2965     
       
  2966     //Push to cleanup stack
       
  2967     CleanupStack::PushL( trig1 );
       
  2968     CleanupStack::PushL( trig2 );
       
  2969         
       
  2970     trig1->SetNameL(_L("Trigger1"));
       
  2971     trig2->SetNameL(_L("Trigger2"));
       
  2972     trig1->SetState(CLbtTriggerEntry::EStateDisabled);
       
  2973     trig2->SetState(CLbtTriggerEntry::EStateEnabled);
       
  2974     
       
  2975     TBuf<4> Networkcountrycode1 = _L("1000");
       
  2976     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  2977     TUint Locationareacode1 = 100;
       
  2978     TUint CellId1 = 100;
       
  2979        
       
  2980     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2981                                                        Networkcountrycode1,
       
  2982                                                        Networkidentitycode1,
       
  2983                                                        Locationareacode1,
       
  2984                                                        CellId1
       
  2985                                                            );
       
  2986     TBuf<4> Networkcountrycode2 = _L("2000");
       
  2987     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  2988     TUint Locationareacode2 = 200;
       
  2989     TUint CellId2 = 200;
       
  2990        
       
  2991     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  2992                                                        Networkcountrycode2,
       
  2993                                                        Networkidentitycode2,
       
  2994                                                        Locationareacode2,
       
  2995                                                        CellId2
       
  2996                                                            );
       
  2997     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  2998                       Hybridareaarray1.Append(Cellarea1);
       
  2999                       Hybridareaarray1.Append(Cellarea2);
       
  3000     CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3001     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3002     
       
  3003     CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
       
  3004     CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
       
  3005     
       
  3006     trig1->SetCondition(condn1);
       
  3007     trig2->SetCondition(condn2);
       
  3008     //set Requestor     
       
  3009     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  3010     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  3011     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  3012     trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3013     trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3014     
       
  3015     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  3016     CleanupStack::PushL( notifier );
       
  3017     
       
  3018     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  3019         
       
  3020     TLbtTriggerId trigId1,trigId2;
       
  3021     notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
       
  3022     wait->Start( );
       
  3023     
       
  3024     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  3025       
       
  3026     TSecureId secureid;
       
  3027     trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  3028     notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
       
  3029     wait->Start( );
       
  3030         
       
  3031     RPointerArray < CLbtTriggerInfo > trigInfoList;
       
  3032     lbt.GetTriggersL(trigInfoList,NULL );
       
  3033     
       
  3034     TInt count = trigInfoList.Count();
       
  3035     for ( TInt i = 0; i < count; i++ )
       
  3036     {
       
  3037     CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
       
  3038     //Check area of the trigger
       
  3039     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  3040 
       
  3041     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  3042      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  3043      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  3044               RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  3045     
       
  3046     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  3047             
       
  3048     CLbtGeoCell* cell2=NULL;
       
  3049     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  3050     {
       
  3051         cell2= static_cast<CLbtGeoCell*> (base);
       
  3052     }    
       
  3053     
       
  3054     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  3055     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  3056     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  3057     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  3058     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  3059     
       
  3060     base=Hybridareaarray2[1];
       
  3061             
       
  3062     cell2=NULL;
       
  3063     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  3064     {
       
  3065         cell2= static_cast<CLbtGeoCell*> (base);
       
  3066     }    
       
  3067     
       
  3068     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  3069     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  3070     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  3071     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  3072     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));                
       
  3073     }
       
  3074     iLog->Log(_L("All checkings done "));    
       
  3075     //free memory
       
  3076     for ( TInt i = 0; i < count; i++ )
       
  3077     {
       
  3078     delete trigInfoList[i];
       
  3079     }
       
  3080     trigInfoList.Close();
       
  3081     CleanupStack::PopAndDestroy( notifier );
       
  3082     CleanupStack::Pop( trig2 );
       
  3083     CleanupStack::PopAndDestroy( trig1 );
       
  3084     CleanupStack::PopAndDestroy( &lbt );
       
  3085     CleanupStack::PopAndDestroy( &lbtserver );
       
  3086     //delete wait;
       
  3087     return KErrNone;    
       
  3088     
       
  3089     }
       
  3090 
       
  3091 // -----------------------------------------------------------------------------
       
  3092 // CTestHybridTriggers::TC_TestGetTriggers2L
       
  3093 // Listing triggers using NULL filter synchronously
       
  3094 // (other items were commented in a header).
       
  3095 // -----------------------------------------------------------------------------
       
  3096 //
       
  3097 TInt CTestHybridTriggers ::TC_TestGetTriggers2L(CStifItemParser& /*aItem*/)
       
  3098     {
       
  3099     RLbtServer lbtserver;
       
  3100     RLbt lbt;
       
  3101     
       
  3102     User::LeaveIfError( lbtserver.Connect() );
       
  3103     CleanupClosePushL( lbtserver );
       
  3104     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  3105     CleanupClosePushL( lbt );
       
  3106      
       
  3107     TRAP_IGNORE(lbt.DeleteTriggersL());
       
  3108       //Construct triggers
       
  3109     CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
       
  3110     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
       
  3111     
       
  3112     //Push to cleanup stack
       
  3113     CleanupStack::PushL( trig1 );
       
  3114     CleanupStack::PushL( trig2 );
       
  3115         
       
  3116     trig1->SetNameL(_L("Trigger1"));
       
  3117     trig2->SetNameL(_L("Trigger2"));
       
  3118     trig1->SetState(CLbtTriggerEntry::EStateDisabled);
       
  3119     trig2->SetState(CLbtTriggerEntry::EStateEnabled);
       
  3120     TBuf<4> Networkcountrycode1 = _L("1000");
       
  3121     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  3122     TUint Locationareacode1 = 100;
       
  3123     TUint CellId1 = 100;
       
  3124        
       
  3125     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  3126                                                        Networkcountrycode1,
       
  3127                                                        Networkidentitycode1,
       
  3128                                                        Locationareacode1,
       
  3129                                                        CellId1
       
  3130                                                            );
       
  3131     TBuf<4> Networkcountrycode2 = _L("2000");
       
  3132     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  3133     TUint Locationareacode2 = 200;
       
  3134     TUint CellId2 = 200;
       
  3135        
       
  3136     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  3137                                                        Networkcountrycode2,
       
  3138                                                        Networkidentitycode2,
       
  3139                                                        Locationareacode2,
       
  3140                                                        CellId2
       
  3141                                                            );
       
  3142     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  3143                       Hybridareaarray1.Append(Cellarea1);
       
  3144                       Hybridareaarray1.Append(Cellarea2);
       
  3145     CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3146     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3147     
       
  3148     CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
       
  3149     CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
       
  3150     
       
  3151     trig1->SetCondition(condn1);
       
  3152     trig2->SetCondition(condn2);
       
  3153     //set Requestor     
       
  3154     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  3155     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  3156     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  3157     trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3158     trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3159     
       
  3160     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  3161     CleanupStack::PushL( notifier );
       
  3162     
       
  3163     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  3164         
       
  3165     TLbtTriggerId trigId1,trigId2;
       
  3166     notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
       
  3167     wait->Start( );
       
  3168     
       
  3169     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  3170       
       
  3171     TSecureId secureid;
       
  3172     trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  3173     notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
       
  3174     wait->Start( );
       
  3175         
       
  3176     RPointerArray < CLbtTriggerInfo > trigInfoList;
       
  3177     notifier->GetTriggersList(lbt,trigInfoList,wait,NULL);
       
  3178     wait->Start();
       
  3179    
       
  3180     TInt count = trigInfoList.Count();
       
  3181     for ( TInt i = 0; i < count; i++ )
       
  3182     {
       
  3183     CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
       
  3184     //Check area of the trigger
       
  3185     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  3186 
       
  3187     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  3188      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  3189      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  3190               RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  3191     
       
  3192     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  3193             
       
  3194     CLbtGeoCell* cell2=NULL;
       
  3195     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  3196     {
       
  3197         cell2= static_cast<CLbtGeoCell*> (base);
       
  3198     }    
       
  3199     
       
  3200     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  3201     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  3202     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  3203     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  3204     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  3205     
       
  3206     base=Hybridareaarray2[1];
       
  3207             
       
  3208     cell2=NULL;
       
  3209     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  3210     {
       
  3211         cell2= static_cast<CLbtGeoCell*> (base);
       
  3212     }    
       
  3213     
       
  3214     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  3215     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  3216     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  3217     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  3218     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  3219     }
       
  3220     iLog->Log(_L("All checkings done "));    
       
  3221     //free memory
       
  3222     for ( TInt i = 0; i < count; i++ )
       
  3223     {
       
  3224     delete trigInfoList[i];
       
  3225     }
       
  3226     trigInfoList.Close();
       
  3227     CleanupStack::PopAndDestroy( notifier );
       
  3228     CleanupStack::Pop( trig2 );
       
  3229     CleanupStack::PopAndDestroy( trig1 );
       
  3230     CleanupStack::PopAndDestroy( &lbt );
       
  3231     CleanupStack::PopAndDestroy( &lbtserver );
       
  3232     //delete wait;
       
  3233     return KErrNone;    
       
  3234     
       
  3235     }
       
  3236 
       
  3237 // -----------------------------------------------------------------------------
       
  3238 // CTestHybridTriggers::TC_TestGetTriggers3L
       
  3239 // listing triggers  using Area filter synchronously when both the cells are matching
       
  3240 // (other items were commented in a header).
       
  3241 // -----------------------------------------------------------------------------
       
  3242 //
       
  3243 TInt CTestHybridTriggers ::TC_TestGetTriggers3L(CStifItemParser& /*aItem*/)
       
  3244     {
       
  3245     return TC_TestGetTriggers3L();
       
  3246     }
       
  3247 
       
  3248 // -----------------------------------------------------------------------------
       
  3249 // CTestHybridTriggers::TC_TestGetTriggers4L
       
  3250 // listing triggers  using Area filter asynchronously when both the cells are matching
       
  3251 // (other items were commented in a header).
       
  3252 // -----------------------------------------------------------------------------
       
  3253 //
       
  3254 TInt CTestHybridTriggers ::TC_TestGetTriggers4L(CStifItemParser& /*aItem*/)
       
  3255     {
       
  3256     return TC_TestGetTriggers4L();
       
  3257     }
       
  3258 
       
  3259 // -----------------------------------------------------------------------------
       
  3260 // CTestHybridTriggers::TC_TestGetTriggers5L
       
  3261 // listing triggers  using Area filter synchronously when both the cells are not matching
       
  3262 // (other items were commented in a header).
       
  3263 // -----------------------------------------------------------------------------
       
  3264 //
       
  3265 TInt CTestHybridTriggers ::TC_TestGetTriggers5L(CStifItemParser& /*aItem*/)
       
  3266     {
       
  3267     return TC_TestGetTriggers5L();
       
  3268     }
       
  3269 
       
  3270 // -----------------------------------------------------------------------------
       
  3271 // CTestHybridTriggers::TC_TestGetTriggers6L
       
  3272 // listing triggers  using Area filter asynchronously when both the cells are not matching
       
  3273 // (other items were commented in a header).
       
  3274 // -----------------------------------------------------------------------------
       
  3275 //
       
  3276 TInt CTestHybridTriggers ::TC_TestGetTriggers6L(CStifItemParser& /*aItem*/)
       
  3277     {
       
  3278     return TC_TestGetTriggers6L();
       
  3279     }
       
  3280 
       
  3281 // -----------------------------------------------------------------------------
       
  3282 // CTestHybridTriggers::TC_TestGetTriggers7L
       
  3283 // listing triggers  using Area filter synchronously when both the cells are not matching
       
  3284 // (other items were commented in a header).
       
  3285 // -----------------------------------------------------------------------------
       
  3286 //
       
  3287 TInt CTestHybridTriggers ::TC_TestGetTriggers7L(CStifItemParser& /*aItem*/)
       
  3288     {
       
  3289     return TC_TestGetTriggers7L();
       
  3290     }
       
  3291 
       
  3292 // -----------------------------------------------------------------------------
       
  3293 // CTestHybridTriggers::TC_TestGetTriggers8L
       
  3294 // listing triggers  using Area filter asynchronously when both the cells are not matching
       
  3295 // (other items were commented in a header).
       
  3296 // -----------------------------------------------------------------------------
       
  3297 //
       
  3298 TInt CTestHybridTriggers ::TC_TestGetTriggers8L(CStifItemParser& /*aItem*/)
       
  3299     {
       
  3300     return TC_TestGetTriggers8L();
       
  3301     }
       
  3302 
       
  3303 // -----------------------------------------------------------------------------
       
  3304 // CTestHybridTriggers::TC_TestDeleteTriggers3L
       
  3305 // Deleting triggers using composite filter  constructed using Multiple CGI Area synchronously
       
  3306 // (other items were commented in a header).
       
  3307 // -----------------------------------------------------------------------------
       
  3308 //
       
  3309 TInt CTestHybridTriggers ::TC_TestGetTriggers9L(CStifItemParser& /*aItem*/)
       
  3310     {
       
  3311     return TC_TestGetTriggers9L();
       
  3312     }
       
  3313 
       
  3314 // -----------------------------------------------------------------------------
       
  3315 // CTestHybridTriggers::TC_TestGetTriggers10L
       
  3316 // listing triggers using composite filter  constructed using Multiple CGI Area asynchronously
       
  3317 // (other items were commented in a header).
       
  3318 // -----------------------------------------------------------------------------
       
  3319 //
       
  3320 TInt CTestHybridTriggers ::TC_TestGetTriggers10L(CStifItemParser& /*aItem*/)
       
  3321     {
       
  3322     return TC_TestGetTriggers10L();
       
  3323     }
       
  3324 
       
  3325 // -----------------------------------------------------------------------------
       
  3326 // CTestHybridTriggers::TC_TestGetTriggers11L
       
  3327 // Listing triggers using composite filter  constructed using Two Multiple CGI Area filters synchronously
       
  3328 // (other items were commented in a header).
       
  3329 // -----------------------------------------------------------------------------
       
  3330 //
       
  3331 TInt CTestHybridTriggers ::TC_TestGetTriggers11L(CStifItemParser& /*aItem*/)
       
  3332     {
       
  3333     return TC_TestGetTriggers11L();
       
  3334     }
       
  3335 
       
  3336 // -----------------------------------------------------------------------------
       
  3337 // CTestHybridTriggers::TC_TestGetTriggers12L
       
  3338 // Listing triggers using composite filter  constructed using Two Multiple CGI Area filters synchronously
       
  3339 // (other items were commented in a header).
       
  3340 // -----------------------------------------------------------------------------
       
  3341 //
       
  3342 TInt CTestHybridTriggers ::TC_TestGetTriggers12L(CStifItemParser& /*aItem*/)
       
  3343     {
       
  3344     return TC_TestGetTriggers12L();
       
  3345     }
       
  3346 
       
  3347 
       
  3348 // -----------------------------------------------------------------------------
       
  3349 // CTestHybridTriggers::TC_TestGetTriggers_Iterator1L
       
  3350 // listing triggers using NULL filter synchronously
       
  3351 // (other items were commented in a header).
       
  3352 // -----------------------------------------------------------------------------
       
  3353 //
       
  3354 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator1L(CStifItemParser& /*aItem*/)
       
  3355     {
       
  3356     RLbtServer lbtserver;
       
  3357     RLbt lbt;
       
  3358     
       
  3359     User::LeaveIfError( lbtserver.Connect() );
       
  3360     CleanupClosePushL( lbtserver );
       
  3361     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  3362     CleanupClosePushL( lbt );
       
  3363     TRAP_IGNORE(lbt.DeleteTriggersL());
       
  3364  
       
  3365       //Construct triggers
       
  3366     CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
       
  3367     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
       
  3368     
       
  3369     //Push to cleanup stack
       
  3370     CleanupStack::PushL( trig1 );
       
  3371     CleanupStack::PushL( trig2 );
       
  3372         
       
  3373     trig1->SetNameL(_L("Trigger1"));
       
  3374     trig2->SetNameL(_L("Trigger2"));
       
  3375     trig1->SetState(CLbtTriggerEntry::EStateDisabled);
       
  3376     trig2->SetState(CLbtTriggerEntry::EStateEnabled);
       
  3377      
       
  3378     TBuf<4> Networkcountrycode1 = _L("1000");
       
  3379     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  3380     TUint Locationareacode1 = 100;
       
  3381     TUint CellId1 = 100;
       
  3382        
       
  3383     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  3384                                                        Networkcountrycode1,
       
  3385                                                        Networkidentitycode1,
       
  3386                                                        Locationareacode1,
       
  3387                                                        CellId1
       
  3388                                                            );
       
  3389     TBuf<4> Networkcountrycode2 = _L("2000");
       
  3390     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  3391     TUint Locationareacode2 = 200;
       
  3392     TUint CellId2 = 200;
       
  3393        
       
  3394     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  3395                                                        Networkcountrycode2,
       
  3396                                                        Networkidentitycode2,
       
  3397                                                        Locationareacode2,
       
  3398                                                        CellId2
       
  3399                                                            );
       
  3400     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  3401                       Hybridareaarray1.Append(Cellarea1);
       
  3402                       Hybridareaarray1.Append(Cellarea2);
       
  3403     CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3404     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3405     
       
  3406     CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
       
  3407     CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
       
  3408     
       
  3409     trig1->SetCondition(condn1);
       
  3410     trig2->SetCondition(condn2);
       
  3411     //set Requestor     
       
  3412     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  3413     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  3414     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  3415     trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3416     trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3417     
       
  3418     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  3419     CleanupStack::PushL( notifier );
       
  3420     
       
  3421     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  3422         
       
  3423     TLbtTriggerId trigId1,trigId2;
       
  3424     notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
       
  3425     wait->Start( );
       
  3426     
       
  3427     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  3428       
       
  3429     TSecureId secureid;
       
  3430     trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  3431     notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
       
  3432     wait->Start( );
       
  3433     
       
  3434     RArray<CLbtTriggerInfo> trigInfoList;
       
  3435     lbt.CreateGetTriggerIteratorL(NULL);
       
  3436     
       
  3437     TInt i=0;
       
  3438     CLbtTriggerInfo* trigInfo = lbt.GetNextTriggerLC(); 
       
  3439     while ( trigInfo != NULL )
       
  3440         {
       
  3441             CleanupStack::Pop(trigInfo);
       
  3442             i++;
       
  3443             trigInfoList.Append(*trigInfo);
       
  3444          // CleanupStack::PopAndDestroy(trigInfo);
       
  3445           trigInfo = lbt.GetNextTriggerLC(); 
       
  3446         }
       
  3447     
       
  3448     TInt count = trigInfoList.Count();
       
  3449     for ( TInt i = 0; i < count; i++ )
       
  3450     {
       
  3451     CLbtTriggerEntry *TrigEntry =trigInfoList[i].TriggerEntry();
       
  3452     //Check area of the trigger
       
  3453     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  3454 
       
  3455     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  3456      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  3457      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  3458               RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  3459     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  3460             
       
  3461     CLbtGeoCell* cell2=NULL;
       
  3462     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  3463     {
       
  3464         cell2= static_cast<CLbtGeoCell*> (base);
       
  3465     }    
       
  3466     
       
  3467     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  3468     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  3469     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  3470     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  3471     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  3472     
       
  3473     base=Hybridareaarray2[1];
       
  3474             
       
  3475     cell2=NULL;
       
  3476     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  3477     {
       
  3478         cell2= static_cast<CLbtGeoCell*> (base);
       
  3479     }    
       
  3480     
       
  3481     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  3482     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  3483     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  3484     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  3485     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  3486     }
       
  3487     iLog->Log(_L("All checkings done "));    
       
  3488     //free memory
       
  3489     
       
  3490     trigInfoList.Close();
       
  3491     CleanupStack::Pop(trigInfo);
       
  3492     CleanupStack::PopAndDestroy( notifier );
       
  3493     CleanupStack::Pop( trig2 );
       
  3494     CleanupStack::PopAndDestroy( trig1 );
       
  3495     CleanupStack::PopAndDestroy( &lbt );
       
  3496     CleanupStack::PopAndDestroy( &lbtserver );
       
  3497     //delete wait;
       
  3498     return KErrNone;    
       
  3499     
       
  3500     }
       
  3501 
       
  3502 // -----------------------------------------------------------------------------
       
  3503 // CTestHybridTriggers::TC_TestGetTriggers_Iterator2L
       
  3504 // listing triggers using NULL filter asynchronously
       
  3505 // (other items were commented in a header).
       
  3506 // -----------------------------------------------------------------------------
       
  3507 //
       
  3508 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator2L(CStifItemParser& /*aItem*/)
       
  3509     {
       
  3510     RLbtServer lbtserver;
       
  3511     RLbt lbt;
       
  3512     
       
  3513     User::LeaveIfError( lbtserver.Connect() );
       
  3514     CleanupClosePushL( lbtserver );
       
  3515     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  3516     CleanupClosePushL( lbt );
       
  3517     TRAP_IGNORE(lbt.DeleteTriggersL()); 
       
  3518  
       
  3519       //Construct triggers
       
  3520     CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
       
  3521     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
       
  3522     
       
  3523     //Push to cleanup stack
       
  3524     CleanupStack::PushL( trig1 );
       
  3525     CleanupStack::PushL( trig2 );
       
  3526         
       
  3527     trig1->SetNameL(_L("Trigger1"));
       
  3528     trig2->SetNameL(_L("Trigger2"));
       
  3529     trig1->SetState(CLbtTriggerEntry::EStateDisabled);
       
  3530     trig2->SetState(CLbtTriggerEntry::EStateEnabled);
       
  3531     TBuf<4> Networkcountrycode1 = _L("1000");
       
  3532     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  3533     TUint Locationareacode1 = 100;
       
  3534     TUint CellId1 = 100;
       
  3535        
       
  3536     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  3537                                                        Networkcountrycode1,
       
  3538                                                        Networkidentitycode1,
       
  3539                                                        Locationareacode1,
       
  3540                                                        CellId1
       
  3541                                                            );
       
  3542     TBuf<4> Networkcountrycode2 = _L("2000");
       
  3543     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  3544     TUint Locationareacode2 = 200;
       
  3545     TUint CellId2 = 200;
       
  3546        
       
  3547     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  3548                                                        Networkcountrycode2,
       
  3549                                                        Networkidentitycode2,
       
  3550                                                        Locationareacode2,
       
  3551                                                        CellId2
       
  3552                                                            );
       
  3553     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  3554                       Hybridareaarray1.Append(Cellarea1);
       
  3555                       Hybridareaarray1.Append(Cellarea2);
       
  3556     CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3557     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3558     CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
       
  3559     CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
       
  3560     
       
  3561     trig1->SetCondition(condn1);
       
  3562     trig2->SetCondition(condn2);
       
  3563     //set Requestor     
       
  3564     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  3565     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  3566     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  3567     trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3568     trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3569     
       
  3570     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  3571     CleanupStack::PushL( notifier );
       
  3572     
       
  3573     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  3574         
       
  3575     TLbtTriggerId trigId1,trigId2;
       
  3576     notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
       
  3577     wait->Start( );
       
  3578     
       
  3579     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  3580       
       
  3581     TSecureId secureid;
       
  3582     trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  3583     notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
       
  3584     wait->Start( );
       
  3585     
       
  3586         
       
  3587     RArray<CLbtTriggerInfo> trigInfoList;
       
  3588     notifier->CreateIterator(lbt,wait,NULL);
       
  3589     wait->Start( );
       
  3590     
       
  3591     TInt i=1;
       
  3592     CLbtTriggerInfo* trigInfo = lbt.GetNextTriggerLC(); 
       
  3593     while ( trigInfo != NULL )
       
  3594         {
       
  3595             CleanupStack::Pop(trigInfo);
       
  3596             i++;
       
  3597             trigInfoList.Append(*trigInfo);
       
  3598          // CleanupStack::PopAndDestroy(trigInfo);
       
  3599           trigInfo = lbt.GetNextTriggerLC(); 
       
  3600         }
       
  3601     
       
  3602     TInt count = trigInfoList.Count();
       
  3603     for ( TInt i = 0; i < count; i++ )
       
  3604     {
       
  3605     CLbtTriggerEntry *TrigEntry =trigInfoList[i].TriggerEntry();
       
  3606     //Check area of the trigger
       
  3607     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  3608 
       
  3609     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  3610      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  3611      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  3612               RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  3613     
       
  3614     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  3615             
       
  3616     CLbtGeoCell* cell2=NULL;
       
  3617     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  3618     {
       
  3619         cell2= static_cast<CLbtGeoCell*> (base);
       
  3620     }    
       
  3621     
       
  3622     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  3623     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  3624     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  3625     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  3626     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  3627     
       
  3628     base=Hybridareaarray2[1];
       
  3629             
       
  3630     cell2=NULL;
       
  3631     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  3632     {
       
  3633         cell2= static_cast<CLbtGeoCell*> (base);
       
  3634     }    
       
  3635     
       
  3636     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  3637     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  3638     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  3639     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  3640     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  3641     }
       
  3642     iLog->Log(_L("All checkings done "));    
       
  3643     //free memory
       
  3644    
       
  3645     trigInfoList.Close();
       
  3646     CleanupStack::Pop(trigInfo);
       
  3647     CleanupStack::PopAndDestroy( notifier );
       
  3648     CleanupStack::Pop( trig2 );
       
  3649     CleanupStack::PopAndDestroy( trig1 );
       
  3650     CleanupStack::PopAndDestroy( &lbt );
       
  3651     CleanupStack::PopAndDestroy( &lbtserver );
       
  3652     //delete wait;
       
  3653     return KErrNone;    
       
  3654     
       
  3655     }
       
  3656 
       
  3657 // -----------------------------------------------------------------------------
       
  3658 // CTestHybridTriggers::TC_TestGetTriggers_Iterator3L
       
  3659 // listing triggers using Area filter synchronously using iterator
       
  3660 // (other items were commented in a header).
       
  3661 // -----------------------------------------------------------------------------
       
  3662 //
       
  3663 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator3L(CStifItemParser& /*aItem*/)
       
  3664     {
       
  3665     return TC_TestGetTriggers_Iterator3L();
       
  3666     }
       
  3667 
       
  3668 // -----------------------------------------------------------------------------
       
  3669 // CTestHybridTriggers::TC_TestGetTriggers_Iterator4L
       
  3670 // listing triggers using Area filter asynchronously using iterator
       
  3671 // (other items were commented in a header).
       
  3672 // -----------------------------------------------------------------------------
       
  3673 //
       
  3674 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator4L(CStifItemParser& /*aItem*/)
       
  3675     {
       
  3676     return TC_TestGetTriggers_Iterator4L();
       
  3677     }
       
  3678 
       
  3679 // -----------------------------------------------------------------------------
       
  3680 // CTestHybridTriggers::TC_TestGetTriggers_Iterator5L
       
  3681 // listing triggers  using Area filter synchronously when both the cells are not matching
       
  3682 // (other items were commented in a header).
       
  3683 // -----------------------------------------------------------------------------
       
  3684 //
       
  3685 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator5L(CStifItemParser& /*aItem*/)
       
  3686     {
       
  3687     return TC_TestGetTriggers_Iterator5L();
       
  3688     }
       
  3689 
       
  3690 // -----------------------------------------------------------------------------
       
  3691 // CTestHybridTriggers::TC_TestGetTriggers6L
       
  3692 // listing triggers  using Area filter asynchronously when both the cells are not matching
       
  3693 // (other items were commented in a header).
       
  3694 // -----------------------------------------------------------------------------
       
  3695 //
       
  3696 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator6L(CStifItemParser& /*aItem*/)
       
  3697     {
       
  3698     
       
  3699     return TC_TestGetTriggers_Iterator6L();
       
  3700     }
       
  3701 
       
  3702 // -----------------------------------------------------------------------------
       
  3703 // CTestHybridTriggers::TC_TestGetTriggers7L
       
  3704 // listing triggers  using Area filter synchronously when both the cells are not matching
       
  3705 // (other items were commented in a header).
       
  3706 // -----------------------------------------------------------------------------
       
  3707 //
       
  3708 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator7L(CStifItemParser& /*aItem*/)
       
  3709     {
       
  3710     return TC_TestGetTriggers_Iterator7L();
       
  3711     }
       
  3712 
       
  3713 // -----------------------------------------------------------------------------
       
  3714 // CTestHybridTriggers::TC_TestGetTriggers8L
       
  3715 // listing triggers  using Area filter asynchronously when both the cells are not matching
       
  3716 // (other items were commented in a header).
       
  3717 // -----------------------------------------------------------------------------
       
  3718 //
       
  3719 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator8L(CStifItemParser& /*aItem*/)
       
  3720     {
       
  3721     return TC_TestGetTriggers_Iterator8L();
       
  3722     }
       
  3723 
       
  3724 // -----------------------------------------------------------------------------
       
  3725 // CTestHybridTriggers::TC_TestDeleteTriggers9L
       
  3726 // Deleting triggers using composite filter  constructed using Multiple CGI Area synchronously
       
  3727 // (other items were commented in a header).
       
  3728 // -----------------------------------------------------------------------------
       
  3729 //
       
  3730 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator9L(CStifItemParser& /*aItem*/)
       
  3731     {
       
  3732     return TC_TestGetTriggers_Iterator9L();
       
  3733     }
       
  3734 
       
  3735 // -----------------------------------------------------------------------------
       
  3736 // CTestHybridTriggers::TC_TestGetTriggers10L
       
  3737 // listing triggers using composite filter  constructed using Multiple CGI Area asynchronously
       
  3738 // (other items were commented in a header).
       
  3739 // -----------------------------------------------------------------------------
       
  3740 //
       
  3741 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator10L(CStifItemParser& /*aItem*/)
       
  3742     {
       
  3743     return TC_TestGetTriggers_Iterator10L();
       
  3744     
       
  3745     }
       
  3746 
       
  3747 // -----------------------------------------------------------------------------
       
  3748 // CTestHybridTriggers::TC_TestGetTriggers_Iterator11L
       
  3749 // Listing triggers using composite filter  constructed using Two Multiple CGI Area filters synchronously
       
  3750 // (other items were commented in a header).
       
  3751 // -----------------------------------------------------------------------------
       
  3752 //
       
  3753 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator11L(CStifItemParser& /*aItem*/)
       
  3754     {
       
  3755     return TC_TestGetTriggers_Iterator11L();
       
  3756     }
       
  3757 
       
  3758 // -----------------------------------------------------------------------------
       
  3759 // CTestHybridTriggers::TC_TestGetTriggers12L
       
  3760 // Listing triggers using composite filter  constructed using Two Multiple CGI Area filters synchronously
       
  3761 // (other items were commented in a header).
       
  3762 // -----------------------------------------------------------------------------
       
  3763 //
       
  3764 TInt CTestHybridTriggers ::TC_TestGetTriggers_Iterator12L(CStifItemParser& /*aItem*/)
       
  3765     {
       
  3766     return TC_TestGetTriggers_Iterator12L();
       
  3767     }
       
  3768 
       
  3769 
       
  3770 // -----------------------------------------------------------------------------
       
  3771 // CTestHybridTriggers::TC_TestSetTriggersState1L
       
  3772 // listing triggers using NULL filter synchronously
       
  3773 // (other items were commented in a header).
       
  3774 // -----------------------------------------------------------------------------
       
  3775 //
       
  3776 TInt CTestHybridTriggers ::TC_TestSetTriggersState1L(CStifItemParser& /*aItem*/)
       
  3777     {
       
  3778     RLbtServer lbtserver;
       
  3779     RLbt lbt;
       
  3780     
       
  3781     User::LeaveIfError( lbtserver.Connect() );
       
  3782     CleanupClosePushL( lbtserver );
       
  3783     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  3784     CleanupClosePushL( lbt );
       
  3785      
       
  3786     TRAP_IGNORE(lbt.DeleteTriggersL());
       
  3787       //Construct triggers
       
  3788     CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
       
  3789     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
       
  3790     
       
  3791     //Push to cleanup stack
       
  3792     CleanupStack::PushL( trig1 );
       
  3793     CleanupStack::PushL( trig2 );
       
  3794         
       
  3795     trig1->SetNameL(_L("Trigger1"));
       
  3796     trig2->SetNameL(_L("Trigger2"));
       
  3797     trig1->SetState(CLbtTriggerEntry::EStateDisabled);
       
  3798     trig2->SetState(CLbtTriggerEntry::EStateEnabled);
       
  3799     TBuf<4> Networkcountrycode1 = _L("1000");
       
  3800     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  3801     TUint Locationareacode1 = 100;
       
  3802     TUint CellId1 = 100;
       
  3803        
       
  3804     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  3805                                                        Networkcountrycode1,
       
  3806                                                        Networkidentitycode1,
       
  3807                                                        Locationareacode1,
       
  3808                                                        CellId1
       
  3809                                                            );
       
  3810     TBuf<4> Networkcountrycode2 = _L("2000");
       
  3811     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  3812     TUint Locationareacode2 = 200;
       
  3813     TUint CellId2 = 200;
       
  3814        
       
  3815     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  3816                                                        Networkcountrycode2,
       
  3817                                                        Networkidentitycode2,
       
  3818                                                        Locationareacode2,
       
  3819                                                        CellId2
       
  3820                                                            );
       
  3821     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  3822                       Hybridareaarray1.Append(Cellarea1);
       
  3823                       Hybridareaarray1.Append(Cellarea2);
       
  3824     CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3825     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3826     CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
       
  3827     CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
       
  3828     
       
  3829     trig1->SetCondition(condn1);
       
  3830     trig2->SetCondition(condn2);
       
  3831     //set Requestor     
       
  3832     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  3833     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  3834     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  3835     trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3836     trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3837     
       
  3838     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  3839     CleanupStack::PushL( notifier );
       
  3840     
       
  3841     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  3842         
       
  3843     TLbtTriggerId trigId1,trigId2;
       
  3844     notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
       
  3845     wait->Start( );
       
  3846     
       
  3847     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  3848       
       
  3849     TSecureId secureid;
       
  3850     trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  3851     notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
       
  3852     wait->Start( );
       
  3853         
       
  3854     lbt.SetTriggersStateL(CLbtTriggerEntry::EStateEnabled,ELbtTrue,NULL);   
       
  3855     
       
  3856     RPointerArray < CLbtTriggerInfo > trigInfoList;
       
  3857     lbt.GetTriggersL(trigInfoList,NULL );
       
  3858     TBool err=EFalse;
       
  3859     TInt count = trigInfoList.Count();
       
  3860     for ( TInt i = 0; i < count; i++ )
       
  3861     {
       
  3862     CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
       
  3863     //Check area of the trigger
       
  3864     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  3865 
       
  3866     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  3867      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  3868      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  3869               RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  3870     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  3871             
       
  3872     CLbtGeoCell* cell2=NULL;
       
  3873     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  3874     {
       
  3875         cell2= static_cast<CLbtGeoCell*> (base);
       
  3876     }    
       
  3877     
       
  3878     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  3879     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  3880     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  3881     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  3882     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  3883     
       
  3884     base=Hybridareaarray2[1];
       
  3885             
       
  3886     cell2=NULL;
       
  3887     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  3888     {
       
  3889         cell2= static_cast<CLbtGeoCell*> (base);
       
  3890     }    
       
  3891     
       
  3892     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  3893     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  3894     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  3895     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  3896     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  3897    
       
  3898     CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
       
  3899     if(State2 !=CLbtTriggerEntry::EStateEnabled)
       
  3900     {
       
  3901     err = ETrue;
       
  3902     }
       
  3903     }
       
  3904     iLog->Log(_L("All checkings done "));    
       
  3905     //free memory
       
  3906     for ( TInt i = 0; i < count; i++ )
       
  3907     {
       
  3908     delete trigInfoList[i];
       
  3909     }
       
  3910     trigInfoList.Close();
       
  3911     CleanupStack::PopAndDestroy( notifier );
       
  3912     CleanupStack::Pop( trig2 );
       
  3913     CleanupStack::PopAndDestroy( trig1 );
       
  3914     CleanupStack::PopAndDestroy( &lbt );
       
  3915     CleanupStack::PopAndDestroy( &lbtserver );
       
  3916     //delete wait;
       
  3917     if(err)
       
  3918     {
       
  3919     iLog->Log(_L("State not changed "));    
       
  3920     return KErrGeneral;
       
  3921     }
       
  3922     return KErrNone;    
       
  3923     
       
  3924     }
       
  3925 
       
  3926 // -----------------------------------------------------------------------------
       
  3927 // CTestHybridTriggers::TC_TestSetTriggerState2L
       
  3928 // listing triggers using NULL filter synchronously
       
  3929 // (other items were commented in a header).
       
  3930 // -----------------------------------------------------------------------------
       
  3931 //
       
  3932 TInt CTestHybridTriggers ::TC_TestSetTriggersState2L(CStifItemParser& /*aItem*/)
       
  3933     {
       
  3934     RLbtServer lbtserver;
       
  3935     RLbt lbt;
       
  3936     
       
  3937     User::LeaveIfError( lbtserver.Connect() );
       
  3938     CleanupClosePushL( lbtserver );
       
  3939     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  3940     CleanupClosePushL( lbt );
       
  3941      
       
  3942     TRAP_IGNORE(lbt.DeleteTriggersL());
       
  3943       //Construct triggers
       
  3944     CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
       
  3945     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
       
  3946     
       
  3947     //Push to cleanup stack
       
  3948     CleanupStack::PushL( trig1 );
       
  3949     CleanupStack::PushL( trig2 );
       
  3950         
       
  3951     trig1->SetNameL(_L("Trigger1"));
       
  3952     trig2->SetNameL(_L("Trigger2"));
       
  3953     trig1->SetState(CLbtTriggerEntry::EStateDisabled);
       
  3954     trig2->SetState(CLbtTriggerEntry::EStateEnabled);
       
  3955     TBuf<4> Networkcountrycode1 = _L("1000");
       
  3956     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  3957     TUint Locationareacode1 = 100;
       
  3958     TUint CellId1 = 100;
       
  3959        
       
  3960     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  3961                                                        Networkcountrycode1,
       
  3962                                                        Networkidentitycode1,
       
  3963                                                        Locationareacode1,
       
  3964                                                        CellId1
       
  3965                                                            );
       
  3966     TBuf<4> Networkcountrycode2 = _L("2000");
       
  3967     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  3968     TUint Locationareacode2 = 200;
       
  3969     TUint CellId2 = 200;
       
  3970        
       
  3971     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  3972                                                        Networkcountrycode2,
       
  3973                                                        Networkidentitycode2,
       
  3974                                                        Locationareacode2,
       
  3975                                                        CellId2
       
  3976                                                            );
       
  3977     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  3978     Hybridareaarray1.Append(Cellarea1);
       
  3979     Hybridareaarray1.Append(Cellarea2);
       
  3980     CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3981     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  3982     CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
       
  3983     CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
       
  3984     
       
  3985     trig1->SetCondition(condn1);
       
  3986     trig2->SetCondition(condn2);
       
  3987     //set Requestor     
       
  3988     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  3989     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  3990     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  3991     trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3992     trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  3993     
       
  3994     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  3995     CleanupStack::PushL( notifier );
       
  3996     
       
  3997     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  3998         
       
  3999     TLbtTriggerId trigId1,trigId2;
       
  4000     notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
       
  4001     wait->Start( );
       
  4002     
       
  4003     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  4004       
       
  4005     TSecureId secureid;
       
  4006     trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  4007     notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
       
  4008     wait->Start( );
       
  4009     
       
  4010     notifier->UpdateTriggersState(lbt,CLbtTriggerEntry::EStateDisabled,wait,NULL);
       
  4011     wait->Start();
       
  4012     
       
  4013     RPointerArray < CLbtTriggerInfo > trigInfoList;
       
  4014     lbt.GetTriggersL(trigInfoList,NULL );
       
  4015     TBool err=EFalse;
       
  4016     TInt count = trigInfoList.Count();
       
  4017     for ( TInt i = 0; i < count; i++ )
       
  4018     {
       
  4019     CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
       
  4020     //Check area of the trigger
       
  4021     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  4022     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  4023      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  4024      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  4025               RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  4026     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  4027             
       
  4028     CLbtGeoCell* cell2=NULL;
       
  4029     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  4030     {
       
  4031         cell2= static_cast<CLbtGeoCell*> (base);
       
  4032     }    
       
  4033     
       
  4034     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  4035     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  4036     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  4037     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  4038     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  4039     
       
  4040     base=Hybridareaarray2[1];
       
  4041             
       
  4042     cell2=NULL;
       
  4043     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  4044     {
       
  4045         cell2= static_cast<CLbtGeoCell*> (base);
       
  4046     }    
       
  4047     
       
  4048     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  4049     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  4050     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  4051     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  4052     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  4053     CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
       
  4054     if(State2 ==CLbtTriggerEntry::EStateEnabled)
       
  4055     {
       
  4056     err = ETrue;
       
  4057     }
       
  4058     }
       
  4059     iLog->Log(_L("All checkings done "));    
       
  4060     //free memory
       
  4061     for ( TInt i = 0; i < count; i++ )
       
  4062     {
       
  4063     delete trigInfoList[i];
       
  4064     }
       
  4065     trigInfoList.Close();
       
  4066     CleanupStack::PopAndDestroy( notifier );
       
  4067     CleanupStack::Pop( trig2 );
       
  4068     CleanupStack::PopAndDestroy( trig1 );
       
  4069     CleanupStack::PopAndDestroy( &lbt );
       
  4070     CleanupStack::PopAndDestroy( &lbtserver );
       
  4071     //delete wait;
       
  4072     if(err)
       
  4073     {
       
  4074     iLog->Log(_L("State Not changed "));    
       
  4075     return KErrGeneral;
       
  4076     }
       
  4077     return KErrNone;    
       
  4078     
       
  4079     }
       
  4080 
       
  4081 // -----------------------------------------------------------------------------
       
  4082 // CTestHybridTriggers::TC_TestSetTriggersState3L
       
  4083 // Settriggersstate  using Area filter synchronously when both the cells are matching
       
  4084 // (other items were commented in a header).
       
  4085 // -----------------------------------------------------------------------------
       
  4086 //
       
  4087 TInt CTestHybridTriggers ::TC_TestSetTriggersState3L(CStifItemParser& /*aItem*/)
       
  4088     {
       
  4089     return TC_TestSetTriggersState3L();
       
  4090     }
       
  4091 
       
  4092 // -----------------------------------------------------------------------------
       
  4093 // CTestHybridTriggers::TC_TestSetTriggersState4L
       
  4094 // settriggersstate  using Area filter asynchronously when both the cells are matching
       
  4095 // (other items were commented in a header).
       
  4096 // -----------------------------------------------------------------------------
       
  4097 //
       
  4098 TInt CTestHybridTriggers ::TC_TestSetTriggersState4L(CStifItemParser& /*aItem*/)
       
  4099     {
       
  4100     return TC_TestSetTriggersState4L();
       
  4101     }
       
  4102 
       
  4103 // -----------------------------------------------------------------------------
       
  4104 // CTestHybridTriggers::TC_TestSetTriggersState5L
       
  4105 // Settriggersstate  using Area filter synchronously when both the cells are not matching
       
  4106 // (other items were commented in a header).
       
  4107 // -----------------------------------------------------------------------------
       
  4108 //
       
  4109 TInt CTestHybridTriggers ::TC_TestSetTriggersState5L(CStifItemParser& /*aItem*/)
       
  4110     {
       
  4111     return TC_TestSetTriggersState5L();
       
  4112     }
       
  4113 
       
  4114 // -----------------------------------------------------------------------------
       
  4115 // CTestHybridTriggers::TC_TestSetTriggersState6L
       
  4116 // Settriggersstate  using Area filter asynchronously when both the cells are not matching
       
  4117 // (other items were commented in a header).
       
  4118 // -----------------------------------------------------------------------------
       
  4119 //
       
  4120 TInt CTestHybridTriggers ::TC_TestSetTriggersState6L(CStifItemParser& /*aItem*/)
       
  4121     {
       
  4122     return TC_TestSetTriggersState6L();
       
  4123     }
       
  4124 
       
  4125 // -----------------------------------------------------------------------------
       
  4126 // CTestHybridTriggers::TC_TestSetTriggersState7L
       
  4127 // Settriggersstate  using Area filter synchronously when both the cells are not matching
       
  4128 // (other items were commented in a header).
       
  4129 // -----------------------------------------------------------------------------
       
  4130 //
       
  4131 TInt CTestHybridTriggers ::TC_TestSetTriggersState7L(CStifItemParser& /*aItem*/)
       
  4132     {
       
  4133     return TC_TestSetTriggersState7L();
       
  4134     }
       
  4135 
       
  4136 // -----------------------------------------------------------------------------
       
  4137 // CTestHybridTriggers::TC_TestSetTriggersState8L
       
  4138 // Settriggersstate  using Area filter asynchronously when both the cells are not matching
       
  4139 // (other items were commented in a header).
       
  4140 // -----------------------------------------------------------------------------
       
  4141 //
       
  4142 TInt CTestHybridTriggers ::TC_TestSetTriggersState8L(CStifItemParser& /*aItem*/)
       
  4143     {
       
  4144     return TC_TestSetTriggersState8L();
       
  4145     }
       
  4146 
       
  4147 // -----------------------------------------------------------------------------
       
  4148 // CTestHybridTriggers::TC_TestSetTriggersState9L
       
  4149 // Settriggersstate using composite filter  constructed using Multiple CGI Area synchronously
       
  4150 // (other items were commented in a header).
       
  4151 // -----------------------------------------------------------------------------
       
  4152 //
       
  4153 TInt CTestHybridTriggers ::TC_TestSetTriggersState9L(CStifItemParser& /*aItem*/)
       
  4154     {
       
  4155     return TC_TestSetTriggersState9L();
       
  4156     }
       
  4157 
       
  4158 // -----------------------------------------------------------------------------
       
  4159 // CTestHybridTriggers::TC_TestSetTriggersState10L
       
  4160 // Settriggersstate using composite filter  constructed using Multiple CGI Area asynchronously
       
  4161 // (other items were commented in a header).
       
  4162 // -----------------------------------------------------------------------------
       
  4163 //
       
  4164 TInt CTestHybridTriggers ::TC_TestSetTriggersState10L(CStifItemParser& /*aItem*/)
       
  4165     {
       
  4166     return TC_TestSetTriggersState10L();
       
  4167     }
       
  4168 
       
  4169 // -----------------------------------------------------------------------------
       
  4170 // CTestHybridTriggers::TC_TestSetTriggersState11L
       
  4171 // Settriggersstate using composite filter  constructed using Two Multiple CGI Area filters synchronously
       
  4172 // (other items were commented in a header).
       
  4173 // -----------------------------------------------------------------------------
       
  4174 //
       
  4175 TInt CTestHybridTriggers ::TC_TestSetTriggersState11L(CStifItemParser& /*aItem*/)
       
  4176     {
       
  4177     return TC_TestSetTriggersState11L();
       
  4178     }
       
  4179 
       
  4180 // -----------------------------------------------------------------------------
       
  4181 // CTestHybridTriggers::TC_TestSetTriggersState12L
       
  4182 // Settriggersstate using composite filter  constructed using Two Multiple CGI Area filters synchronously
       
  4183 // (other items were commented in a header).
       
  4184 // -----------------------------------------------------------------------------
       
  4185 //
       
  4186 TInt CTestHybridTriggers ::TC_TestSetTriggersState12L(CStifItemParser& /*aItem*/)
       
  4187     {
       
  4188     return TC_TestSetTriggersState12L();
       
  4189     }
       
  4190 
       
  4191 
       
  4192     
       
  4193     // -----------------------------------------------------------------------------
       
  4194 // CTestHybridTriggers::TC_TestSetTriggerState1L
       
  4195 // listing triggers using NULL filter synchronously
       
  4196 // (other items were commented in a header).
       
  4197 // -----------------------------------------------------------------------------
       
  4198 //
       
  4199 TInt CTestHybridTriggers ::TC_TestSetTriggerState1L(CStifItemParser& /*aItem*/)
       
  4200     {
       
  4201     RLbtServer lbtserver;
       
  4202     RLbt lbt;
       
  4203     
       
  4204     User::LeaveIfError( lbtserver.Connect() );
       
  4205     CleanupClosePushL( lbtserver );
       
  4206     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  4207     CleanupClosePushL( lbt );
       
  4208      
       
  4209     TRAP_IGNORE(lbt.DeleteTriggersL());
       
  4210       //Construct triggers
       
  4211     CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
       
  4212     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
       
  4213     
       
  4214     //Push to cleanup stack
       
  4215     CleanupStack::PushL( trig1 );
       
  4216     CleanupStack::PushL( trig2 );
       
  4217         
       
  4218     trig1->SetNameL(_L("Trigger1"));
       
  4219     trig2->SetNameL(_L("Trigger2"));
       
  4220     trig1->SetState(CLbtTriggerEntry::EStateDisabled);
       
  4221     trig2->SetState(CLbtTriggerEntry::EStateEnabled);
       
  4222     TBuf<4> Networkcountrycode1 = _L("1000");
       
  4223     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  4224     TUint Locationareacode1 = 100;
       
  4225     TUint CellId1 = 100;
       
  4226        
       
  4227     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  4228                                                        Networkcountrycode1,
       
  4229                                                        Networkidentitycode1,
       
  4230                                                        Locationareacode1,
       
  4231                                                        CellId1
       
  4232                                                            );
       
  4233     TBuf<4> Networkcountrycode2 = _L("2000");
       
  4234     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  4235     TUint Locationareacode2 = 200;
       
  4236     TUint CellId2 = 200;
       
  4237        
       
  4238     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  4239                                                        Networkcountrycode2,
       
  4240                                                        Networkidentitycode2,
       
  4241                                                        Locationareacode2,
       
  4242                                                        CellId2
       
  4243                                                            );
       
  4244     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  4245                       Hybridareaarray1.Append(Cellarea1);
       
  4246                       Hybridareaarray1.Append(Cellarea2);
       
  4247     CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  4248     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  4249     CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
       
  4250     CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
       
  4251     
       
  4252     trig1->SetCondition(condn1);
       
  4253     trig2->SetCondition(condn2);
       
  4254     //set Requestor     
       
  4255     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  4256     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  4257     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  4258     trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  4259     trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  4260     
       
  4261     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  4262     CleanupStack::PushL( notifier );
       
  4263     
       
  4264     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  4265         
       
  4266     TLbtTriggerId trigId1,trigId2;
       
  4267     notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
       
  4268     wait->Start( );
       
  4269     
       
  4270     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  4271       
       
  4272     TSecureId secureid;
       
  4273     trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  4274     notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
       
  4275     wait->Start( );
       
  4276         
       
  4277     lbt.SetTriggerStateL(trigId1,CLbtTriggerEntry::EStateEnabled,ELbtTrue);
       
  4278     lbt.SetTriggerStateL(trigId2,CLbtTriggerEntry::EStateEnabled,ELbtTrue);
       
  4279     
       
  4280     RPointerArray < CLbtTriggerInfo > trigInfoList;
       
  4281     lbt.GetTriggersL(trigInfoList,NULL );
       
  4282     TBool err=EFalse;
       
  4283     TInt count = trigInfoList.Count();
       
  4284     for ( TInt i = 0; i < count; i++ )
       
  4285     {
       
  4286     CLbtTriggerEntry *TrigEntry =trigInfoList[i]->TriggerEntry();
       
  4287     //Check area of the trigger
       
  4288     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  4289 
       
  4290     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  4291      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  4292      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  4293               RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  4294     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  4295             
       
  4296     CLbtGeoCell* cell2=NULL;
       
  4297     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  4298     {
       
  4299         cell2= static_cast<CLbtGeoCell*> (base);
       
  4300     }    
       
  4301     
       
  4302     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  4303     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  4304     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  4305     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  4306     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  4307     
       
  4308     base=Hybridareaarray2[1];
       
  4309             
       
  4310     cell2=NULL;
       
  4311     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  4312     {
       
  4313         cell2= static_cast<CLbtGeoCell*> (base);
       
  4314     }    
       
  4315     
       
  4316     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  4317     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  4318     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  4319     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  4320     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));           
       
  4321    
       
  4322     CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ; 
       
  4323     if(State2 !=CLbtTriggerEntry::EStateEnabled)
       
  4324     {
       
  4325     err = ETrue;
       
  4326     }
       
  4327     }
       
  4328     iLog->Log(_L("All checkings done "));    
       
  4329     //free memory
       
  4330     for ( TInt i = 0; i < count; i++ )
       
  4331     {
       
  4332     delete trigInfoList[i];
       
  4333     }
       
  4334     trigInfoList.Close();
       
  4335     CleanupStack::PopAndDestroy( notifier );
       
  4336     CleanupStack::Pop( trig2 );
       
  4337     CleanupStack::PopAndDestroy( trig1 );
       
  4338     CleanupStack::PopAndDestroy( &lbt );
       
  4339     CleanupStack::PopAndDestroy( &lbtserver );
       
  4340     //delete wait;
       
  4341     if(err)
       
  4342     {
       
  4343     return KErrGeneral;
       
  4344     }
       
  4345     return KErrNone;    
       
  4346     
       
  4347     }
       
  4348 
       
  4349 // -----------------------------------------------------------------------------
       
  4350 // CTestHybridTriggers::TC_TestListtriggerIds5L
       
  4351 // listing triggers using NULL filter synchronously
       
  4352 // (other items were commented in a header).
       
  4353 // -----------------------------------------------------------------------------
       
  4354 //
       
  4355 TInt CTestHybridTriggers ::TC_TestListtriggerIds1L(CStifItemParser& /*aItem*/)
       
  4356     {
       
  4357     RLbtServer lbtserver;
       
  4358     RLbt lbt;
       
  4359     
       
  4360     User::LeaveIfError( lbtserver.Connect() );
       
  4361     CleanupClosePushL( lbtserver );
       
  4362     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  4363     CleanupClosePushL( lbt );
       
  4364      
       
  4365     TRAP_IGNORE(lbt.DeleteTriggersL());
       
  4366       //Construct triggers
       
  4367     CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
       
  4368     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
       
  4369     
       
  4370     //Push to cleanup stack
       
  4371     CleanupStack::PushL( trig1 );
       
  4372     CleanupStack::PushL( trig2 );
       
  4373         
       
  4374     trig1->SetNameL(_L("Trigger1"));
       
  4375     trig2->SetNameL(_L("Trigger2"));
       
  4376     trig1->SetState(CLbtTriggerEntry::EStateDisabled);
       
  4377     trig2->SetState(CLbtTriggerEntry::EStateEnabled);
       
  4378     TBuf<4> Networkcountrycode1 = _L("1000");
       
  4379     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  4380     TUint Locationareacode1 = 100;
       
  4381     TUint CellId1 = 100;
       
  4382        
       
  4383     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  4384                                                        Networkcountrycode1,
       
  4385                                                        Networkidentitycode1,
       
  4386                                                        Locationareacode1,
       
  4387                                                        CellId1
       
  4388                                                            );
       
  4389     TBuf<4> Networkcountrycode2 = _L("2000");
       
  4390     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  4391     TUint Locationareacode2 = 200;
       
  4392     TUint CellId2 = 200;
       
  4393        
       
  4394     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  4395                                                        Networkcountrycode2,
       
  4396                                                        Networkidentitycode2,
       
  4397                                                        Locationareacode2,
       
  4398                                                        CellId2
       
  4399                                                            );
       
  4400     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  4401                       Hybridareaarray1.Append(Cellarea1);
       
  4402                       Hybridareaarray1.Append(Cellarea2);
       
  4403     CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  4404     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  4405     CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
       
  4406     CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
       
  4407     
       
  4408     trig1->SetCondition(condn1);
       
  4409     trig2->SetCondition(condn2);
       
  4410     //set Requestor     
       
  4411     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  4412     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  4413     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  4414     trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  4415     trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  4416     
       
  4417     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  4418     CleanupStack::PushL( notifier );
       
  4419     
       
  4420     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  4421         
       
  4422     TLbtTriggerId trigId1,trigId2;
       
  4423     notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
       
  4424     wait->Start( );
       
  4425     
       
  4426     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  4427       
       
  4428     TSecureId secureid;
       
  4429     trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  4430     notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
       
  4431     wait->Start( );
       
  4432     
       
  4433     RArray< TLbtTriggerId>  aTriggerIdList;
       
  4434     lbt.ListTriggerIdsL (aTriggerIdList,NULL);
       
  4435    
       
  4436     TInt count = aTriggerIdList.Count();
       
  4437     TInt Numoftriggersfound =0;
       
  4438     for ( TInt i = 0; i < count; i++ )
       
  4439     {
       
  4440     if(aTriggerIdList[i]==trigId1 ||aTriggerIdList[i]==trigId2 )
       
  4441         {
       
  4442         Numoftriggersfound++;
       
  4443         }
       
  4444     
       
  4445     }
       
  4446     iLog->Log(_L("All checkings done "));    
       
  4447     //free memory
       
  4448    
       
  4449     aTriggerIdList.Close();
       
  4450     CleanupStack::PopAndDestroy( notifier );
       
  4451     CleanupStack::Pop( trig2 );
       
  4452     CleanupStack::PopAndDestroy( trig1 );
       
  4453     CleanupStack::PopAndDestroy( &lbt );
       
  4454     CleanupStack::PopAndDestroy( &lbtserver );
       
  4455     //delete wait;
       
  4456     if(Numoftriggersfound<2)
       
  4457         return KErrGeneral;
       
  4458     return KErrNone;    
       
  4459     
       
  4460     }
       
  4461 
       
  4462 // -----------------------------------------------------------------------------
       
  4463 // CTestHybridTriggers::TC_TestGetTriggers2L
       
  4464 // Listing triggers using NULL filter asynchronously
       
  4465 // (other items were commented in a header).
       
  4466 // -----------------------------------------------------------------------------
       
  4467 //
       
  4468 TInt CTestHybridTriggers ::TC_TestListtriggerIds2L(CStifItemParser& /*aItem*/)
       
  4469     {
       
  4470     RLbtServer lbtserver;
       
  4471     RLbt lbt;
       
  4472     
       
  4473     User::LeaveIfError( lbtserver.Connect() );
       
  4474     CleanupClosePushL( lbtserver );
       
  4475     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  4476     CleanupClosePushL( lbt );
       
  4477      
       
  4478     TRAP_IGNORE(lbt.DeleteTriggersL());
       
  4479       //Construct triggers
       
  4480     CLbtSessionTrigger* trig1 = CLbtSessionTrigger::NewL();
       
  4481     CLbtStartupTrigger* trig2 = CLbtStartupTrigger::NewL();
       
  4482     
       
  4483     //Push to cleanup stack
       
  4484     CleanupStack::PushL( trig1 );
       
  4485     CleanupStack::PushL( trig2 );
       
  4486         
       
  4487     trig1->SetNameL(_L("Trigger1"));
       
  4488     trig2->SetNameL(_L("Trigger2"));
       
  4489     trig1->SetState(CLbtTriggerEntry::EStateDisabled);
       
  4490     trig2->SetState(CLbtTriggerEntry::EStateEnabled);
       
  4491     TBuf<4> Networkcountrycode1 = _L("1000");
       
  4492     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  4493     TUint Locationareacode1 = 100;
       
  4494     TUint CellId1 = 100;
       
  4495        
       
  4496     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  4497                                                        Networkcountrycode1,
       
  4498                                                        Networkidentitycode1,
       
  4499                                                        Locationareacode1,
       
  4500                                                        CellId1
       
  4501                                                            );
       
  4502     TBuf<4> Networkcountrycode2 = _L("2000");
       
  4503     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  4504     TUint Locationareacode2 = 200;
       
  4505     TUint CellId2 = 200;
       
  4506        
       
  4507     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  4508                                                        Networkcountrycode2,
       
  4509                                                        Networkidentitycode2,
       
  4510                                                        Locationareacode2,
       
  4511                                                        CellId2
       
  4512                                                            );
       
  4513     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  4514                       Hybridareaarray1.Append(Cellarea1);
       
  4515                       Hybridareaarray1.Append(Cellarea2);
       
  4516     CLbtGeoHybrid* Hybridarea1  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  4517     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  4518 
       
  4519     CLbtTriggerConditionArea* condn1=CLbtTriggerConditionArea::NewL(Hybridarea1,CLbtTriggerConditionArea::EFireOnEnter);
       
  4520     CLbtTriggerConditionArea* condn2=CLbtTriggerConditionArea::NewL(Hybridarea2,CLbtTriggerConditionArea::EFireOnEnter);
       
  4521     
       
  4522     trig1->SetCondition(condn1);
       
  4523     trig2->SetCondition(condn2);
       
  4524     //set Requestor     
       
  4525     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  4526     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  4527     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  4528     trig1->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  4529     trig2->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  4530     
       
  4531     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  4532     CleanupStack::PushL( notifier );
       
  4533     
       
  4534     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  4535         
       
  4536     TLbtTriggerId trigId1,trigId2;
       
  4537     notifier->CreateTriggers( lbt,*trig1,trigId1,ETrue,wait );
       
  4538     wait->Start( );
       
  4539     
       
  4540     _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  4541       
       
  4542     TSecureId secureid;
       
  4543     trig2->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  4544     notifier->CreateTriggers( lbt,*trig2,trigId2,ETrue,wait );
       
  4545     wait->Start( );
       
  4546     
       
  4547     RArray< TLbtTriggerId>  aTriggerIdList;
       
  4548     notifier->ListTriggerIdsList(lbt,aTriggerIdList,wait,NULL);
       
  4549     wait->Start();
       
  4550    
       
  4551     TInt count = aTriggerIdList.Count();
       
  4552     TInt Numoftriggersfound =0;
       
  4553     for ( TInt i = 0; i < count; i++ )
       
  4554     {
       
  4555     if(aTriggerIdList[i]==trigId1 ||aTriggerIdList[i]==trigId2 )
       
  4556         {
       
  4557         Numoftriggersfound++;
       
  4558         }
       
  4559     
       
  4560     }
       
  4561     iLog->Log(_L("All checkings done "));    
       
  4562     //free memory
       
  4563     
       
  4564     aTriggerIdList.Close();
       
  4565     CleanupStack::PopAndDestroy( notifier );
       
  4566     CleanupStack::Pop( trig2 );
       
  4567     CleanupStack::PopAndDestroy( trig1 );
       
  4568     CleanupStack::PopAndDestroy( &lbt );
       
  4569     CleanupStack::PopAndDestroy( &lbtserver );
       
  4570     //delete wait;
       
  4571     if(Numoftriggersfound<2)
       
  4572             return KErrGeneral;
       
  4573     return KErrNone;       
       
  4574     
       
  4575     }
       
  4576 
       
  4577 // -----------------------------------------------------------------------------
       
  4578 // CTestHybridTriggers::TC_TestListtriggerIds3L
       
  4579 // listing trigger ids  using Area filter synchronously when both the cells are matching
       
  4580 // (other items were commented in a header).
       
  4581 // -----------------------------------------------------------------------------
       
  4582 //
       
  4583 TInt CTestHybridTriggers ::TC_TestListtriggerIds3L(CStifItemParser& /*aItem*/)
       
  4584     {
       
  4585     return TC_TestListtriggerIds3L();
       
  4586     }
       
  4587 
       
  4588 
       
  4589 // -----------------------------------------------------------------------------
       
  4590 // CTestHybridTriggers::TC_TestListtriggerIds4L
       
  4591 // listing trigger ids  using Area filter asynchronously when both the cells are matching
       
  4592 // (other items were commented in a header).
       
  4593 // -----------------------------------------------------------------------------
       
  4594 //
       
  4595 TInt CTestHybridTriggers ::TC_TestListtriggerIds4L(CStifItemParser& /*aItem*/)
       
  4596     {
       
  4597     return TC_TestListtriggerIds4L();
       
  4598     }
       
  4599 
       
  4600 // -----------------------------------------------------------------------------
       
  4601 // CTestHybridTriggers::TC_TestListtriggerIds5L
       
  4602 // listing trigger ids  using Area filter synchronously when both the cells are not matching
       
  4603 // (other items were commented in a header).
       
  4604 // -----------------------------------------------------------------------------
       
  4605 //
       
  4606 TInt CTestHybridTriggers ::TC_TestListtriggerIds5L(CStifItemParser& /*aItem*/)
       
  4607     {
       
  4608     return TC_TestListtriggerIds5L();
       
  4609     }
       
  4610 
       
  4611 // -----------------------------------------------------------------------------
       
  4612 // CTestHybridTriggers::TC_TestListtriggerIds6L
       
  4613 // listing trigger ids  using Area filter asynchronously when both the cells are not matching
       
  4614 // (other items were commented in a header).
       
  4615 // -----------------------------------------------------------------------------
       
  4616 //
       
  4617 TInt CTestHybridTriggers ::TC_TestListtriggerIds6L(CStifItemParser& /*aItem*/)
       
  4618     {
       
  4619     return TC_TestListtriggerIds6L();
       
  4620     }
       
  4621 
       
  4622 
       
  4623 // -----------------------------------------------------------------------------
       
  4624 // CTestHybridTriggers::TC_TestListtriggerIds7L
       
  4625 // listing trigger ids  using Area filter synchronously when both the cells are not matching
       
  4626 // (other items were commented in a header).
       
  4627 // -----------------------------------------------------------------------------
       
  4628 //
       
  4629 TInt CTestHybridTriggers ::TC_TestListtriggerIds7L(CStifItemParser& /*aItem*/)
       
  4630     {
       
  4631     return TC_TestListtriggerIds7L();
       
  4632     }
       
  4633 
       
  4634 // -----------------------------------------------------------------------------
       
  4635 // CTestHybridTriggers::TC_TestListtriggerIds8L
       
  4636 // listing trigger ids  using Area filter asynchronously when both the cells are not matching
       
  4637 // (other items were commented in a header).
       
  4638 // -----------------------------------------------------------------------------
       
  4639 //
       
  4640 TInt CTestHybridTriggers ::TC_TestListtriggerIds8L(CStifItemParser& /*aItem*/)
       
  4641     {
       
  4642     return TC_TestListtriggerIds8L();
       
  4643     }
       
  4644 
       
  4645 // -----------------------------------------------------------------------------
       
  4646 // CTestHybridTriggers::TC_TestListtriggerIds9L
       
  4647 // listing trigger ids using composite filter  constructed using Multiple CGI Area synchronously
       
  4648 // (other items were commented in a header).
       
  4649 // -----------------------------------------------------------------------------
       
  4650 //
       
  4651 TInt CTestHybridTriggers ::TC_TestListtriggerIds9L(CStifItemParser& /*aItem*/)
       
  4652     {
       
  4653     return TC_TestListtriggerIds9L();
       
  4654     }
       
  4655 
       
  4656 // -----------------------------------------------------------------------------
       
  4657 // CTestHybridTriggers::TC_TestListtriggerIds10L
       
  4658 // listing trigger ids using composite filter  constructed using Multiple CGI Area asynchronously
       
  4659 // (other items were commented in a header).
       
  4660 // -----------------------------------------------------------------------------
       
  4661 //
       
  4662 TInt CTestHybridTriggers ::TC_TestListtriggerIds10L(CStifItemParser& /*aItem*/)
       
  4663     {
       
  4664     return TC_TestListtriggerIds10L();
       
  4665     }
       
  4666 
       
  4667 // -----------------------------------------------------------------------------
       
  4668 // CTestHybridTriggers::TC_TestListtriggerIds11L
       
  4669 // listing trigger ids using composite filter  constructed using Two Multiple CGI Area filters synchronously
       
  4670 // (other items were commented in a header).
       
  4671 // -----------------------------------------------------------------------------
       
  4672 //
       
  4673 TInt CTestHybridTriggers ::TC_TestListtriggerIds11L(CStifItemParser& /*aItem*/)
       
  4674     {
       
  4675     return TC_TestListtriggerIds11L();
       
  4676     }
       
  4677 
       
  4678 // -----------------------------------------------------------------------------
       
  4679 // CTestHybridTriggers::TC_TestListtriggerIds12L
       
  4680 // listing trigger ids using composite filter  constructed using Two Multiple CGI Area filters synchronously
       
  4681 // (other items were commented in a header).
       
  4682 // -----------------------------------------------------------------------------
       
  4683 //
       
  4684 TInt CTestHybridTriggers ::TC_TestListtriggerIds12L(CStifItemParser& /*aItem*/)
       
  4685     {
       
  4686     return TC_TestListtriggerIds12L();
       
  4687     }
       
  4688 
       
  4689 
       
  4690 // -----------------------------------------------------------------------------
       
  4691 // CTestHybridTriggers::TC_TestGettriggerLC1L
       
  4692 // Retrieving trigger attributes
       
  4693 // (other items were commented in a header).
       
  4694 // -----------------------------------------------------------------------------
       
  4695 //
       
  4696     //Retrieving informations about a Cellular based startup trigger
       
  4697 TInt CTestHybridTriggers::TC_TestGettriggerLC1L( CStifItemParser& /* aItem */ )
       
  4698     {
       
  4699     RLbtServer lbtserver;
       
  4700     RLbt lbt;
       
  4701     iLog->Log(_L("Before Connect "));
       
  4702     User::LeaveIfError( lbtserver.Connect() );
       
  4703     iLog->Log(_L("After Connect "));
       
  4704     CleanupClosePushL( lbtserver );
       
  4705     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  4706     CleanupClosePushL( lbt );
       
  4707     iLog->Log(_L("After RLbt::Open "));
       
  4708     
       
  4709  
       
  4710       //Construct a startup trigger
       
  4711     CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
       
  4712     
       
  4713     //Push to cleanup stack
       
  4714   //  CleanupStack::PushL( trig );
       
  4715     
       
  4716     // Set Name
       
  4717     trig->SetNameL(_L("Trigger1"));
       
  4718     _LIT( KMyTriggerHandlingProcessName, "TrigHandlingProcess.exe" );
       
  4719     
       
  4720     TSecureId secureid;
       
  4721     trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  4722        
       
  4723     // set condition
       
  4724     TBuf<4> Networkcountrycode1 = _L("1000");
       
  4725       TBuf<8> Networkidentitycode1 = _L("10000000");
       
  4726       TUint Locationareacode1 = 100;
       
  4727       TUint CellId1 = 100;
       
  4728           
       
  4729       CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  4730                                                           Networkcountrycode1,
       
  4731                                                           Networkidentitycode1,
       
  4732                                                           Locationareacode1,
       
  4733                                                           CellId1
       
  4734                                                               );
       
  4735       TBuf<4> Networkcountrycode2 = _L("2000");
       
  4736       TBuf<8> Networkidentitycode2 = _L("20000000");
       
  4737       TUint Locationareacode2 = 200;
       
  4738       TUint CellId2 = 200;
       
  4739           
       
  4740       CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  4741                                                           Networkcountrycode2,
       
  4742                                                           Networkidentitycode2,
       
  4743                                                           Locationareacode2,
       
  4744                                                           CellId2
       
  4745                                                               );
       
  4746       RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  4747                         Hybridareaarray1.Append(Cellarea1);
       
  4748                         Hybridareaarray1.Append(Cellarea2);
       
  4749       CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  4750     
       
  4751     TUid aManagerUi = TUid::Uid(0x87654321);     
       
  4752     // ownership of Cellarea object transferred to the condition object
       
  4753     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  4754                                                 Hybridarea,
       
  4755                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  4756         
       
  4757     
       
  4758     
       
  4759     trig->SetCondition(condition); // ownership transferred to object
       
  4760 
       
  4761     TLbtTriggerId trigId,trigId2;
       
  4762      trig->SetManagerUi(aManagerUi);   
       
  4763      //set Requestor     
       
  4764     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  4765     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  4766     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  4767     trig->SetRequestorL(ReqType,ReqFormat,ReqData);   
       
  4768     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt );
       
  4769     CleanupStack::PushL( notifier );
       
  4770     
       
  4771     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  4772         
       
  4773     notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
       
  4774     wait->Start( );
       
  4775     //User::After(5000000);
       
  4776     CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
       
  4777     iLog->Log(_L("Before GetTriggerLC "));
       
  4778     
       
  4779     Triginfo = lbt.GetTriggerLC(trigId);
       
  4780     iLog->Log(_L("After GetTriggerLC "));
       
  4781     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  4782     
       
  4783     TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
       
  4784     
       
  4785    // CleanupStack::PopAndDestroy( trig );
       
  4786    
       
  4787     //Check the name of the trigger
       
  4788     TDesC Name2 =TrigEntry->Name(); 
       
  4789     if(TrigEntry->Name()!=trig->Name()) 
       
  4790     {
       
  4791         return -99;
       
  4792     }
       
  4793     //Check the state of the trigger
       
  4794     CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
       
  4795     if(State2 !=trig->State())
       
  4796     {
       
  4797         return -99;
       
  4798     }
       
  4799     //Check type of the trigger
       
  4800     TInt Type2 = TrigEntry ->Type();
       
  4801     if(Type2 != trig->Type())
       
  4802     {
       
  4803         return -99;
       
  4804     }
       
  4805     //Check Condition of the trigger
       
  4806     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  4807     CLbtTriggerConditionArea::TDirection direction;
       
  4808     direction = Condition2->Direction();
       
  4809     if(direction!=CLbtTriggerConditionArea::EFireOnEnter)
       
  4810     {
       
  4811         return -99;
       
  4812     }
       
  4813     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  4814      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  4815      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  4816               RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  4817     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  4818             
       
  4819     CLbtGeoCell* cell2=NULL;
       
  4820     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  4821     {
       
  4822         cell2= static_cast<CLbtGeoCell*> (base);
       
  4823     }    
       
  4824     
       
  4825     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  4826     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  4827     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  4828     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  4829     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  4830     
       
  4831     base=Hybridareaarray2[1];
       
  4832             
       
  4833     cell2=NULL;
       
  4834     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  4835     {
       
  4836         cell2= static_cast<CLbtGeoCell*> (base);
       
  4837     }    
       
  4838     
       
  4839     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  4840     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  4841     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  4842     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  4843     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));        
       
  4844     //Check requestors 
       
  4845     RRequestorStack   aRequestors,aRequestors2 ;
       
  4846     TrigEntry->GetRequestorsL(aRequestors2);
       
  4847     trig->GetRequestorsL(aRequestors);
       
  4848    for(TInt i=0;i<aRequestors.Count();i++)
       
  4849     {
       
  4850         CRequestor *requestor = aRequestors[i];
       
  4851         if(requestor->RequestorType()!=NULL)
       
  4852         {
       
  4853             return -99;
       
  4854         }
       
  4855         if(requestor->RequestorData()!=KNullDesC)
       
  4856         {
       
  4857             return -99;
       
  4858         }
       
  4859         else if(requestor->RequestorFormat()!=NULL)
       
  4860         {
       
  4861             return -99;
       
  4862         }
       
  4863     
       
  4864     }
       
  4865     //Check trigger Id
       
  4866     trigId2 = TrigEntry->Id();
       
  4867     if(trigId !=trigId2)
       
  4868     {
       
  4869         return -99;
       
  4870     }
       
  4871     //Check ManagerUI
       
  4872     TUid Managerui2 = TrigEntry->ManagerUi();
       
  4873     if(Managerui2!=aManagerUi)
       
  4874     {
       
  4875         return -99;
       
  4876     }
       
  4877     //Check validity
       
  4878     TLbtTriggerDynamicInfo::TLbtTriggerValidity validity;
       
  4879    validity= dyninfo -> iValidity;
       
  4880    if(validity!=TLbtTriggerDynamicInfo::EValid)
       
  4881    {
       
  4882     return -99;
       
  4883    }
       
  4884    //Check Activity status
       
  4885 /*  TLbtTriggerDynamicInfo::TLbtTriggerActivityStatus currstatus;
       
  4886     currstatus = dyninfo -> iActivityStatus;
       
  4887     if(currstatus!=TLbtTriggerDynamicInfo::EActive)
       
  4888     {
       
  4889         return -99;
       
  4890     }*/
       
  4891     CleanupStack::PopAndDestroy(1 );//trig info
       
  4892     CleanupStack::PopAndDestroy( notifier );
       
  4893     CleanupStack::PopAndDestroy( &lbt );
       
  4894     CleanupStack::PopAndDestroy( &lbtserver );
       
  4895    // //delete wait;
       
  4896     iLog->Log(_L("Test passed "));
       
  4897     return KErrNone; 
       
  4898       
       
  4899     }
       
  4900 
       
  4901 // -----------------------------------------------------------------------------
       
  4902 // CTestHybridTriggers::TC_TestGettriggerLC2L
       
  4903 // Retrieving trigger attributes
       
  4904 // (other items were commented in a header).
       
  4905 // -----------------------------------------------------------------------------
       
  4906 //
       
  4907     //Retrieving informations about a Cellular based startup trigger
       
  4908 TInt CTestHybridTriggers::TC_TestGettriggerLC2L( CStifItemParser& /* aItem */ )
       
  4909     {
       
  4910     RLbtServer lbtserver;
       
  4911     RLbt lbt;
       
  4912     iLog->Log(_L("Before Connect "));
       
  4913     User::LeaveIfError( lbtserver.Connect() );
       
  4914     iLog->Log(_L("After Connect "));
       
  4915     CleanupClosePushL( lbtserver );
       
  4916     User::LeaveIfError( lbt.Open( lbtserver ) );
       
  4917     CleanupClosePushL( lbt );
       
  4918     iLog->Log(_L("After RLbt::Open "));
       
  4919     
       
  4920  
       
  4921       //Construct a startup trigger
       
  4922     CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
       
  4923     
       
  4924     //Push to cleanup stack
       
  4925   //  CleanupStack::PushL( trig );
       
  4926     
       
  4927     // Set Name
       
  4928     trig->SetNameL(_L("Trigger1"));
       
  4929     
       
  4930     // set condition
       
  4931     TBuf<4> Networkcountrycode1 = _L("1000");
       
  4932    TBuf<8> Networkidentitycode1 = _L("10000000");
       
  4933    TUint Locationareacode1 = 100;
       
  4934    TUint CellId1 = 100;
       
  4935        
       
  4936    CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  4937                                                        Networkcountrycode1,
       
  4938                                                        Networkidentitycode1,
       
  4939                                                        Locationareacode1,
       
  4940                                                        CellId1
       
  4941                                                            );
       
  4942    TBuf<4> Networkcountrycode2 = _L("2000");
       
  4943    TBuf<8> Networkidentitycode2 = _L("20000000");
       
  4944    TUint Locationareacode2 = 200;
       
  4945    TUint CellId2 = 200;
       
  4946        
       
  4947    CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  4948                                                        Networkcountrycode2,
       
  4949                                                        Networkidentitycode2,
       
  4950                                                        Locationareacode2,
       
  4951                                                        CellId2
       
  4952                                                            );
       
  4953    RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  4954                      Hybridareaarray1.Append(Cellarea1);
       
  4955                      Hybridareaarray1.Append(Cellarea2);
       
  4956    CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  4957     TUid aManagerUi = TUid::Uid(0x87654321);     
       
  4958     // ownership of Cellarea object transferred to the condition object
       
  4959     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  4960                                                 Hybridarea,
       
  4961                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  4962         
       
  4963     
       
  4964     
       
  4965     trig->SetCondition(condition); // ownership transferred to object
       
  4966 
       
  4967     TLbtTriggerId trigId,trigId2;
       
  4968      trig->SetManagerUi(aManagerUi);   
       
  4969      //set Requestor     
       
  4970     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  4971     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  4972     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  4973     trig->SetRequestorL(ReqType,ReqFormat,ReqData);   
       
  4974     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt );
       
  4975     CleanupStack::PushL( notifier );
       
  4976     
       
  4977     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  4978         
       
  4979     notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
       
  4980     wait->Start( );
       
  4981     //User::After(5000000);
       
  4982     CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
       
  4983     iLog->Log(_L("Before GetTriggerLC "));
       
  4984     
       
  4985     Triginfo = lbt.GetTriggerLC(trigId);
       
  4986     iLog->Log(_L("After GetTriggerLC "));
       
  4987     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  4988     
       
  4989     TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
       
  4990     
       
  4991    // CleanupStack::PopAndDestroy( trig );
       
  4992    
       
  4993     //Check the name of the trigger
       
  4994     TDesC Name2 =TrigEntry->Name(); 
       
  4995     if(TrigEntry->Name()!=trig->Name()) 
       
  4996     {
       
  4997         return -99;
       
  4998     }
       
  4999     //Check the state of the trigger
       
  5000     CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
       
  5001     if(State2 !=trig->State())
       
  5002     {
       
  5003         return -99;
       
  5004     }
       
  5005     //Check type of the trigger
       
  5006     TInt Type2 = TrigEntry ->Type();
       
  5007     if(Type2 != trig->Type())
       
  5008     {
       
  5009         return -99;
       
  5010     }
       
  5011     //Check Condition of the trigger
       
  5012     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  5013     CLbtTriggerConditionArea::TDirection direction;
       
  5014     direction = Condition2->Direction();
       
  5015     if(direction!=CLbtTriggerConditionArea::EFireOnEnter)
       
  5016     {
       
  5017         return -99;
       
  5018     }
       
  5019     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  5020      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  5021      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  5022               RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  5023     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  5024             
       
  5025     CLbtGeoCell* cell2=NULL;
       
  5026     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  5027     {
       
  5028         cell2= static_cast<CLbtGeoCell*> (base);
       
  5029     }    
       
  5030     
       
  5031     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  5032     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  5033     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  5034     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  5035     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  5036     
       
  5037     base=Hybridareaarray2[1];
       
  5038             
       
  5039     cell2=NULL;
       
  5040     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  5041     {
       
  5042         cell2= static_cast<CLbtGeoCell*> (base);
       
  5043     }    
       
  5044     
       
  5045     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  5046     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  5047     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  5048     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  5049     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));        
       
  5050     //Check requestors 
       
  5051     RRequestorStack   aRequestors,aRequestors2 ;
       
  5052     TrigEntry->GetRequestorsL(aRequestors2);
       
  5053     trig->GetRequestorsL(aRequestors);
       
  5054     for(TInt i=0;i<aRequestors.Count();i++)
       
  5055     {
       
  5056         CRequestor *requestor = aRequestors[i];
       
  5057         if(requestor->RequestorType()!=NULL)
       
  5058         {
       
  5059             return -99;
       
  5060         }
       
  5061         if(requestor->RequestorData()!=KNullDesC)
       
  5062         {
       
  5063             return -99;
       
  5064         }
       
  5065         else if(requestor->RequestorFormat()!=NULL)
       
  5066         {
       
  5067             return -99;
       
  5068         }
       
  5069     
       
  5070     }
       
  5071     //Check trigger Id
       
  5072     trigId2 = TrigEntry->Id();
       
  5073     if(trigId !=trigId2)
       
  5074     {
       
  5075         return -99;
       
  5076     }
       
  5077     //Check ManagerUI
       
  5078     TUid Managerui2 = TrigEntry->ManagerUi();
       
  5079     if(Managerui2!=aManagerUi)
       
  5080     {
       
  5081         return -99;
       
  5082     }
       
  5083     //Check validity
       
  5084     TLbtTriggerDynamicInfo::TLbtTriggerValidity validity;
       
  5085    validity= dyninfo -> iValidity;
       
  5086    if(validity!=TLbtTriggerDynamicInfo::EValid)
       
  5087    {
       
  5088     return -99;
       
  5089    }
       
  5090    //Check Activity status
       
  5091 /*  TLbtTriggerDynamicInfo::TLbtTriggerActivityStatus currstatus;
       
  5092     currstatus = dyninfo -> iActivityStatus;
       
  5093     if(currstatus!=TLbtTriggerDynamicInfo::EActive)
       
  5094     {
       
  5095         return -99;
       
  5096     }*/
       
  5097     CleanupStack::PopAndDestroy(1 );//trig info
       
  5098     CleanupStack::PopAndDestroy( notifier );
       
  5099     CleanupStack::PopAndDestroy( &lbt );
       
  5100     CleanupStack::PopAndDestroy( &lbtserver );
       
  5101    // //delete wait;
       
  5102     iLog->Log(_L("Test passed "));
       
  5103     return KErrNone; 
       
  5104       
       
  5105     }
       
  5106 
       
  5107 // -----------------------------------------------------------------------------
       
  5108 // CTestHybridTriggers::TC_TestUpdateTrigger1L
       
  5109 // Updating attributes of a Cellular based startup trigger synchronously
       
  5110 // (other items were commented in a header).
       
  5111 // -----------------------------------------------------------------------------
       
  5112 //
       
  5113 TInt CTestHybridTriggers::TC_TestUpdateTrigger1L( CStifItemParser& /* aItem */ )
       
  5114   {
       
  5115    RLbtServer lbtserver;
       
  5116    RLbt lbt;
       
  5117    iLog->Log(_L("Before Connect "));
       
  5118    User::LeaveIfError( lbtserver.Connect() );
       
  5119    iLog->Log(_L("After Connect "));
       
  5120    CleanupClosePushL( lbtserver );
       
  5121    
       
  5122    User::LeaveIfError( lbt.Open( lbtserver ) );
       
  5123    CleanupClosePushL( lbt );
       
  5124    iLog->Log(_L("After RLbt::Open "));
       
  5125   
       
  5126 //   #if 0
       
  5127     //Construct a startup trigger
       
  5128    CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
       
  5129   
       
  5130   //Push to cleanup stack
       
  5131    CleanupStack::PushL( trig );
       
  5132   
       
  5133   // Set Name
       
  5134    trig->SetNameL(_L("Trigger1"));
       
  5135    _LIT( KMyTriggerHandlingProcessName, "LbtReference.exe" );
       
  5136   
       
  5137    TSecureId secureid;
       
  5138    trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  5139      
       
  5140   // set condition
       
  5141    TBuf<4> Networkcountrycode1 = _L("1000");
       
  5142      TBuf<8> Networkidentitycode1 = _L("10000000");
       
  5143      TUint Locationareacode1 = 100;
       
  5144      TUint CellId1 = 100;
       
  5145          
       
  5146      CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5147                                                          Networkcountrycode1,
       
  5148                                                          Networkidentitycode1,
       
  5149                                                          Locationareacode1,
       
  5150                                                          CellId1
       
  5151                                                              );
       
  5152      TBuf<4> Networkcountrycode2 = _L("2000");
       
  5153      TBuf<8> Networkidentitycode2 = _L("20000000");
       
  5154      TUint Locationareacode2 = 200;
       
  5155      TUint CellId2 = 200;
       
  5156          
       
  5157      CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5158                                                          Networkcountrycode2,
       
  5159                                                          Networkidentitycode2,
       
  5160                                                          Locationareacode2,
       
  5161                                                          CellId2
       
  5162                                                              );
       
  5163      RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  5164                        Hybridareaarray1.Append(Cellarea1);
       
  5165                        Hybridareaarray1.Append(Cellarea2);
       
  5166      CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  5167   
       
  5168    TUid aManagerUi = TUid::Uid(0x87654321);     
       
  5169    // ownership of Cellarea object transferred to the condition object
       
  5170    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  5171                                                Hybridarea,
       
  5172                                               CLbtTriggerConditionArea::EFireOnEnter);
       
  5173       
       
  5174      
       
  5175    trig->SetCondition(condition); // ownership transferred to object
       
  5176 
       
  5177    //set Requestor     
       
  5178    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  5179    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  5180    TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  5181    trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  5182    trig->SetManagerUi(aManagerUi);   
       
  5183       
       
  5184    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt );
       
  5185    CleanupStack::PushL( notifier );
       
  5186   
       
  5187    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  5188    TLbtTriggerId trigId,trigId2;   
       
  5189    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
       
  5190    wait->Start( );
       
  5191   
       
  5192    //**************New Trigger Entry**************/ 
       
  5193    CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
       
  5194    newtrig->SetNameL(_L("TriggerTest"));
       
  5195    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
       
  5196    TBuf<4> Networkcountrycode3 = _L("3000");
       
  5197     TBuf<8> Networkidentitycode3 = _L("30000000");
       
  5198     TUint Locationareacode3 = 300;
       
  5199     TUint CellId3 = 300;
       
  5200         
       
  5201     CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5202                                                         Networkcountrycode3,
       
  5203                                                         Networkidentitycode3,
       
  5204                                                         Locationareacode3,
       
  5205                                                         CellId3
       
  5206                                                             );
       
  5207     TBuf<4> Networkcountrycode4 = _L("4000");
       
  5208     TBuf<8> Networkidentitycode4 = _L("40000000");
       
  5209     TUint Locationareacode4 = 400;
       
  5210     TUint CellId4 = 400;
       
  5211         
       
  5212     CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5213                                                         Networkcountrycode4,
       
  5214                                                         Networkidentitycode4,
       
  5215                                                         Locationareacode4,
       
  5216                                                         CellId4
       
  5217                                                             );
       
  5218     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2 ;
       
  5219                            Hybridareaarray2.Append(Cellarea3);
       
  5220                            Hybridareaarray2.Append(Cellarea4);
       
  5221     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray2);
       
  5222    // ownership of Cellarea object transferred to the condition object
       
  5223    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
       
  5224                                                Hybridarea2,
       
  5225                                               CLbtTriggerConditionArea::EFireOnEnter);
       
  5226       
       
  5227       
       
  5228    newtrig->SetCondition(newcondition); // ownership transferred to object
       
  5229    //  trigId = 1;
       
  5230    newtrig->SetId(trigId);
       
  5231  
       
  5232    /***************************End*******************/
       
  5233    iLog->Log(_L("Before UpdateTriggerL "));
       
  5234    lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
       
  5235            |CLbtTriggerEntry::EAttributeState
       
  5236            |CLbtTriggerEntry::EAttributeCondition,ELbtTrue);
       
  5237  
       
  5238    iLog->Log(_L("After UpdateTriggerL "));
       
  5239   
       
  5240    iLog->Log(_L("Before GetTriggerLC "));
       
  5241    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
       
  5242    Triginfo = lbt.GetTriggerLC(trigId);
       
  5243    iLog->Log(_L("After GetTriggerLC "));
       
  5244    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  5245   
       
  5246    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
       
  5247    //Check the name of the trigger
       
  5248    TDesC Name2 =TrigEntry->Name(); 
       
  5249    if(TrigEntry->Name()!=newtrig->Name()) 
       
  5250        {
       
  5251       return -99;
       
  5252        }
       
  5253   //Check the state of the trigger
       
  5254    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
       
  5255    if(State2 !=newtrig->State())
       
  5256        {
       
  5257       return -99;
       
  5258        }
       
  5259    //Check type of the trigger
       
  5260    TInt Type2 = TrigEntry ->Type();
       
  5261    if(Type2 != newtrig->Type())
       
  5262        {
       
  5263       return -99;
       
  5264        }
       
  5265    //Check Condition of the trigger
       
  5266   
       
  5267    CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  5268 
       
  5269    CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  5270         AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  5271         CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  5272                  RPointerArray<CLbtGeoAreaBase> Hybridareaarray3= area->HybridArea(); 
       
  5273        CLbtGeoAreaBase* base=Hybridareaarray3[0];
       
  5274                
       
  5275        CLbtGeoCell* cell2=NULL;
       
  5276        if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  5277        {
       
  5278            cell2= static_cast<CLbtGeoCell*> (base);
       
  5279        }    
       
  5280        
       
  5281        AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  5282        AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
       
  5283        AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
       
  5284        AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
       
  5285        AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
       
  5286        
       
  5287        base=Hybridareaarray3[1];
       
  5288                
       
  5289        cell2=NULL;
       
  5290        if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  5291        {
       
  5292            cell2= static_cast<CLbtGeoCell*> (base);
       
  5293        }    
       
  5294        
       
  5295        AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  5296        AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
       
  5297        AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
       
  5298        AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
       
  5299        AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));        
       
  5300   //}
       
  5301   //Check trigger Id
       
  5302    trigId2 = TrigEntry->Id();
       
  5303    if(trigId !=trigId2)
       
  5304        {
       
  5305       return -99;
       
  5306        }
       
  5307   
       
  5308    CleanupStack::PopAndDestroy( 1 );//Triginfo
       
  5309    CleanupStack::PopAndDestroy( notifier );
       
  5310    CleanupStack::PopAndDestroy( trig );
       
  5311  // #endif
       
  5312    CleanupStack::Pop( &lbt );
       
  5313    lbt.Close();
       
  5314   
       
  5315    CleanupStack::PopAndDestroy( &lbtserver );
       
  5316  // //delete wait;
       
  5317  
       
  5318   iLog->Log(_L("Test passed "));
       
  5319   return KErrNone; 
       
  5320     
       
  5321   }
       
  5322 
       
  5323 // -----------------------------------------------------------------------------
       
  5324 // CTestHybridTriggers::TC_TestUpdateTrigger2L
       
  5325 // Updating attributes of a Cellular based session trigger synchronously
       
  5326 // (other items were commented in a header).
       
  5327 // -----------------------------------------------------------------------------
       
  5328 //
       
  5329 TInt CTestHybridTriggers::TC_TestUpdateTrigger2L( CStifItemParser& /* aItem */ )
       
  5330   {
       
  5331      RLbtServer lbtserver;
       
  5332      RLbt lbt;
       
  5333      iLog->Log(_L("Before Connect "));
       
  5334      User::LeaveIfError( lbtserver.Connect() );
       
  5335      iLog->Log(_L("After Connect "));
       
  5336      CleanupClosePushL( lbtserver );
       
  5337      
       
  5338      User::LeaveIfError( lbt.Open( lbtserver ) );
       
  5339      CleanupClosePushL( lbt );
       
  5340      iLog->Log(_L("After RLbt::Open "));
       
  5341     
       
  5342     //   #if 0
       
  5343       //Construct a startup trigger
       
  5344      CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
       
  5345     
       
  5346     //Push to cleanup stack
       
  5347      CleanupStack::PushL( trig );
       
  5348     
       
  5349     // Set Name
       
  5350      trig->SetNameL(_L("Trigger1"));
       
  5351     
       
  5352     // set condition
       
  5353      TBuf<4> Networkcountrycode1 = _L("1000");
       
  5354        TBuf<8> Networkidentitycode1 = _L("10000000");
       
  5355        TUint Locationareacode1 = 100;
       
  5356        TUint CellId1 = 100;
       
  5357            
       
  5358        CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5359                                                            Networkcountrycode1,
       
  5360                                                            Networkidentitycode1,
       
  5361                                                            Locationareacode1,
       
  5362                                                            CellId1
       
  5363                                                                );
       
  5364        TBuf<4> Networkcountrycode2 = _L("2000");
       
  5365        TBuf<8> Networkidentitycode2 = _L("20000000");
       
  5366        TUint Locationareacode2 = 200;
       
  5367        TUint CellId2 = 200;
       
  5368            
       
  5369        CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5370                                                            Networkcountrycode2,
       
  5371                                                            Networkidentitycode2,
       
  5372                                                            Locationareacode2,
       
  5373                                                            CellId2
       
  5374                                                                );
       
  5375        RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  5376                          Hybridareaarray1.Append(Cellarea1);
       
  5377                          Hybridareaarray1.Append(Cellarea2);
       
  5378        CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  5379     
       
  5380      TUid aManagerUi = TUid::Uid(0x87654321);     
       
  5381      // ownership of Cellarea object transferred to the condition object
       
  5382      CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  5383                                                  Hybridarea,
       
  5384                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  5385         
       
  5386        
       
  5387      trig->SetCondition(condition); // ownership transferred to object
       
  5388     
       
  5389      //set Requestor     
       
  5390      CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  5391      CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  5392      TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  5393      trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  5394      trig->SetManagerUi(aManagerUi);   
       
  5395         
       
  5396      CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt );
       
  5397      CleanupStack::PushL( notifier );
       
  5398     
       
  5399      CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  5400      TLbtTriggerId trigId,trigId2;   
       
  5401      notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
       
  5402      wait->Start( );
       
  5403     
       
  5404      //**************New Trigger Entry**************/ 
       
  5405      CLbtSessionTrigger* newtrig = CLbtSessionTrigger::NewL();
       
  5406      newtrig->SetNameL(_L("TriggerTest"));
       
  5407      newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
       
  5408      TBuf<4> Networkcountrycode3 = _L("3000");
       
  5409       TBuf<8> Networkidentitycode3 = _L("30000000");
       
  5410       TUint Locationareacode3 = 300;
       
  5411       TUint CellId3 = 300;
       
  5412           
       
  5413       CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5414                                                           Networkcountrycode3,
       
  5415                                                           Networkidentitycode3,
       
  5416                                                           Locationareacode3,
       
  5417                                                           CellId3
       
  5418                                                               );
       
  5419       TBuf<4> Networkcountrycode4 = _L("4000");
       
  5420       TBuf<8> Networkidentitycode4 = _L("40000000");
       
  5421       TUint Locationareacode4 = 400;
       
  5422       TUint CellId4 = 400;
       
  5423           
       
  5424       CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5425                                                           Networkcountrycode4,
       
  5426                                                           Networkidentitycode4,
       
  5427                                                           Locationareacode4,
       
  5428                                                           CellId4
       
  5429                                                               );
       
  5430       RPointerArray<CLbtGeoAreaBase> Hybridareaarray2 ;
       
  5431                                Hybridareaarray2.Append(Cellarea3);
       
  5432                                Hybridareaarray2.Append(Cellarea4);
       
  5433       CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray2);
       
  5434      // ownership of Cellarea object transferred to the condition object
       
  5435      CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
       
  5436                                                  Hybridarea2,
       
  5437                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  5438         
       
  5439         
       
  5440      newtrig->SetCondition(newcondition); // ownership transferred to object
       
  5441      //  trigId = 1;
       
  5442      newtrig->SetId(trigId);
       
  5443     
       
  5444      /***************************End*******************/
       
  5445      iLog->Log(_L("Before UpdateTriggerL "));
       
  5446      lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
       
  5447              |CLbtTriggerEntry::EAttributeState
       
  5448              |CLbtTriggerEntry::EAttributeCondition,ELbtTrue);
       
  5449     
       
  5450      iLog->Log(_L("After UpdateTriggerL "));
       
  5451     
       
  5452      iLog->Log(_L("Before GetTriggerLC "));
       
  5453      CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
       
  5454      Triginfo = lbt.GetTriggerLC(trigId);
       
  5455      iLog->Log(_L("After GetTriggerLC "));
       
  5456      CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  5457     
       
  5458      TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
       
  5459      //Check the name of the trigger
       
  5460      TDesC Name2 =TrigEntry->Name(); 
       
  5461      if(TrigEntry->Name()!=newtrig->Name()) 
       
  5462          {
       
  5463         return -99;
       
  5464          }
       
  5465     //Check the state of the trigger
       
  5466      CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
       
  5467      if(State2 !=newtrig->State())
       
  5468          {
       
  5469         return -99;
       
  5470          }
       
  5471      //Check type of the trigger
       
  5472      TInt Type2 = TrigEntry ->Type();
       
  5473      if(Type2 != newtrig->Type())
       
  5474          {
       
  5475         return -99;
       
  5476          }
       
  5477      //Check Condition of the trigger
       
  5478     
       
  5479      CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  5480     
       
  5481      CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  5482       AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  5483       CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  5484                RPointerArray<CLbtGeoAreaBase> Hybridareaarray3= area->HybridArea();
       
  5485      CLbtGeoAreaBase* base=Hybridareaarray3[0];
       
  5486              
       
  5487      CLbtGeoCell* cell2=NULL;
       
  5488      if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  5489      {
       
  5490          cell2= static_cast<CLbtGeoCell*> (base);
       
  5491      }    
       
  5492      
       
  5493      AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  5494      AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
       
  5495      AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
       
  5496      AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
       
  5497      AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
       
  5498      
       
  5499      base=Hybridareaarray3[1];
       
  5500              
       
  5501      cell2=NULL;
       
  5502      if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  5503      {
       
  5504          cell2= static_cast<CLbtGeoCell*> (base);
       
  5505      }    
       
  5506      
       
  5507      AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  5508      AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
       
  5509      AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
       
  5510      AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
       
  5511      AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));        
       
  5512     //}
       
  5513     //Check trigger Id
       
  5514      trigId2 = TrigEntry->Id();
       
  5515      if(trigId !=trigId2)
       
  5516          {
       
  5517         return -99;
       
  5518          }
       
  5519     
       
  5520      CleanupStack::PopAndDestroy( 1 );//Triginfo
       
  5521      CleanupStack::PopAndDestroy( notifier );
       
  5522      CleanupStack::PopAndDestroy( trig );
       
  5523     // #endif
       
  5524      CleanupStack::Pop( &lbt );
       
  5525      lbt.Close();
       
  5526     
       
  5527      CleanupStack::PopAndDestroy( &lbtserver );
       
  5528     // //delete wait;
       
  5529     
       
  5530     iLog->Log(_L("Test passed "));
       
  5531     return KErrNone; 
       
  5532       
       
  5533     
       
  5534   }
       
  5535 
       
  5536 // -----------------------------------------------------------------------------
       
  5537 // CTestHybridTriggers::TC_TestUpdateTrigger3L
       
  5538 // Updating attributes of a Cellular based startup trigger asynchronously
       
  5539 // (other items were commented in a header).
       
  5540 // -----------------------------------------------------------------------------
       
  5541 //
       
  5542 TInt CTestHybridTriggers::TC_TestUpdateTrigger3L( CStifItemParser& /* aItem */ )
       
  5543   {
       
  5544   RLbtServer lbtserver;
       
  5545      RLbt lbt;
       
  5546      iLog->Log(_L("Before Connect "));
       
  5547      User::LeaveIfError( lbtserver.Connect() );
       
  5548      iLog->Log(_L("After Connect "));
       
  5549      CleanupClosePushL( lbtserver );
       
  5550      
       
  5551      User::LeaveIfError( lbt.Open( lbtserver ) );
       
  5552      CleanupClosePushL( lbt );
       
  5553      iLog->Log(_L("After RLbt::Open "));
       
  5554     
       
  5555   //   #if 0
       
  5556       //Construct a startup trigger
       
  5557      CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
       
  5558     
       
  5559     //Push to cleanup stack
       
  5560      CleanupStack::PushL( trig );
       
  5561     
       
  5562     // Set Name
       
  5563      trig->SetNameL(_L("Trigger1"));
       
  5564      _LIT( KMyTriggerHandlingProcessName, "LbtReference.exe" );
       
  5565     
       
  5566      TSecureId secureid;
       
  5567      trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  5568        
       
  5569     // set condition
       
  5570      TBuf<4> Networkcountrycode1 = _L("1000");
       
  5571        TBuf<8> Networkidentitycode1 = _L("10000000");
       
  5572        TUint Locationareacode1 = 100;
       
  5573        TUint CellId1 = 100;
       
  5574            
       
  5575        CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5576                                                            Networkcountrycode1,
       
  5577                                                            Networkidentitycode1,
       
  5578                                                            Locationareacode1,
       
  5579                                                            CellId1
       
  5580                                                                );
       
  5581        TBuf<4> Networkcountrycode2 = _L("2000");
       
  5582        TBuf<8> Networkidentitycode2 = _L("20000000");
       
  5583        TUint Locationareacode2 = 200;
       
  5584        TUint CellId2 = 200;
       
  5585            
       
  5586        CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5587                                                            Networkcountrycode2,
       
  5588                                                            Networkidentitycode2,
       
  5589                                                            Locationareacode2,
       
  5590                                                            CellId2
       
  5591                                                                );
       
  5592        RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  5593        Hybridareaarray1.Append(Cellarea1);
       
  5594        Hybridareaarray1.Append(Cellarea2);
       
  5595        CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  5596     
       
  5597      TUid aManagerUi = TUid::Uid(0x87654321);     
       
  5598      // ownership of Cellarea object transferred to the condition object
       
  5599      CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  5600                                                  Hybridarea,
       
  5601                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  5602         
       
  5603        
       
  5604      trig->SetCondition(condition); // ownership transferred to object
       
  5605 
       
  5606      //set Requestor     
       
  5607      CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  5608      CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  5609      TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  5610      trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  5611      trig->SetManagerUi(aManagerUi);   
       
  5612         
       
  5613      CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt );
       
  5614      CleanupStack::PushL( notifier );
       
  5615     
       
  5616      CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  5617      TLbtTriggerId trigId,trigId2;   
       
  5618      notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
       
  5619      wait->Start( );
       
  5620     
       
  5621      //**************New Trigger Entry**************/ 
       
  5622      CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
       
  5623      newtrig->SetNameL(_L("TriggerTest"));
       
  5624      newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
       
  5625      TBuf<4> Networkcountrycode3 = _L("3000");
       
  5626       TBuf<8> Networkidentitycode3 = _L("30000000");
       
  5627       TUint Locationareacode3 = 300;
       
  5628       TUint CellId3 = 300;
       
  5629           
       
  5630       CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5631                                                           Networkcountrycode3,
       
  5632                                                           Networkidentitycode3,
       
  5633                                                           Locationareacode3,
       
  5634                                                           CellId3
       
  5635                                                               );
       
  5636       TBuf<4> Networkcountrycode4 = _L("4000");
       
  5637       TBuf<8> Networkidentitycode4 = _L("40000000");
       
  5638       TUint Locationareacode4 = 400;
       
  5639       TUint CellId4 = 400;
       
  5640           
       
  5641       CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5642                                                           Networkcountrycode4,
       
  5643                                                           Networkidentitycode4,
       
  5644                                                           Locationareacode4,
       
  5645                                                           CellId4
       
  5646                                                               );
       
  5647       RPointerArray<CLbtGeoAreaBase> Hybridareaarray2 ;
       
  5648                                Hybridareaarray2.Append(Cellarea3);
       
  5649                                Hybridareaarray2.Append(Cellarea4);
       
  5650       CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray2);
       
  5651      // ownership of Cellarea object transferred to the condition object
       
  5652      CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
       
  5653                                                  Hybridarea2,
       
  5654                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  5655         
       
  5656         
       
  5657      newtrig->SetCondition(newcondition); // ownership transferred to object
       
  5658      //  trigId = 1;
       
  5659      newtrig->SetId(trigId);
       
  5660    
       
  5661      /***************************End*******************/
       
  5662      iLog->Log(_L("Before UpdateTriggerL "));
       
  5663      notifier->UpdateTrigger(lbt,*newtrig,CLbtTriggerEntry::EAttributeName
       
  5664             |CLbtTriggerEntry::EAttributeState
       
  5665             |CLbtTriggerEntry::EAttributeCondition ,wait,ELbtTrue
       
  5666             );
       
  5667      wait->Start( );
       
  5668      iLog->Log(_L("After UpdateTriggerL "));
       
  5669     
       
  5670      iLog->Log(_L("Before GetTriggerLC "));
       
  5671      CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
       
  5672      Triginfo = lbt.GetTriggerLC(trigId);
       
  5673      iLog->Log(_L("After GetTriggerLC "));
       
  5674      CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  5675     
       
  5676      TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
       
  5677      //Check the name of the trigger
       
  5678      TDesC Name2 =TrigEntry->Name(); 
       
  5679      if(TrigEntry->Name()!=newtrig->Name()) 
       
  5680          {
       
  5681         return -99;
       
  5682          }
       
  5683     //Check the state of the trigger
       
  5684      CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
       
  5685      if(State2 !=newtrig->State())
       
  5686          {
       
  5687         return -99;
       
  5688          }
       
  5689      //Check type of the trigger
       
  5690      TInt Type2 = TrigEntry ->Type();
       
  5691      if(Type2 != newtrig->Type())
       
  5692          {
       
  5693         return -99;
       
  5694          }
       
  5695      //Check Condition of the trigger
       
  5696     
       
  5697      CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  5698 
       
  5699      CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  5700       AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  5701       CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  5702                RPointerArray<CLbtGeoAreaBase> Hybridareaarray3= area->HybridArea();
       
  5703      CLbtGeoAreaBase* base=Hybridareaarray3[0];
       
  5704              
       
  5705      CLbtGeoCell* cell2=NULL;
       
  5706      if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  5707      {
       
  5708          cell2= static_cast<CLbtGeoCell*> (base);
       
  5709      }    
       
  5710      
       
  5711      AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  5712      AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
       
  5713      AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
       
  5714      AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
       
  5715      AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
       
  5716      
       
  5717      base=Hybridareaarray3[1];
       
  5718              
       
  5719      cell2=NULL;
       
  5720      if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  5721      {
       
  5722          cell2= static_cast<CLbtGeoCell*> (base);
       
  5723      }    
       
  5724      
       
  5725      AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  5726      AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
       
  5727      AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
       
  5728      AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
       
  5729      AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));        
       
  5730     //}
       
  5731     //Check trigger Id
       
  5732      trigId2 = TrigEntry->Id();
       
  5733      if(trigId !=trigId2)
       
  5734          {
       
  5735         return -99;
       
  5736          }
       
  5737     
       
  5738      CleanupStack::PopAndDestroy( 1 );//Triginfo
       
  5739      CleanupStack::PopAndDestroy( notifier );
       
  5740      CleanupStack::PopAndDestroy( trig );
       
  5741    // #endif
       
  5742      CleanupStack::Pop( &lbt );
       
  5743      lbt.Close();
       
  5744     
       
  5745      CleanupStack::PopAndDestroy( &lbtserver );
       
  5746    // //delete wait;
       
  5747    
       
  5748     iLog->Log(_L("Test passed "));
       
  5749     return KErrNone; 
       
  5750     
       
  5751   }
       
  5752 
       
  5753 // -----------------------------------------------------------------------------
       
  5754 // CTestHybridTriggers::TC_TestUpdateTrigger4L
       
  5755 // Updating attributes of a Cellular based startup trigger synchronously
       
  5756 // (other items were commented in a header).
       
  5757 // -----------------------------------------------------------------------------
       
  5758 //
       
  5759 TInt CTestHybridTriggers::TC_TestUpdateTrigger4L( CStifItemParser& /* aItem */ )
       
  5760   {
       
  5761   RLbtServer lbtserver;
       
  5762    RLbt lbt;
       
  5763    iLog->Log(_L("Before Connect "));
       
  5764    User::LeaveIfError( lbtserver.Connect() );
       
  5765    iLog->Log(_L("After Connect "));
       
  5766    CleanupClosePushL( lbtserver );
       
  5767    
       
  5768    User::LeaveIfError( lbt.Open( lbtserver ) );
       
  5769    CleanupClosePushL( lbt );
       
  5770    iLog->Log(_L("After RLbt::Open "));
       
  5771   
       
  5772   //   #if 0
       
  5773     //Construct a startup trigger
       
  5774    CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
       
  5775   
       
  5776   //Push to cleanup stack
       
  5777    CleanupStack::PushL( trig );
       
  5778   
       
  5779   // Set Name
       
  5780    trig->SetNameL(_L("Trigger1"));
       
  5781   
       
  5782   // set condition
       
  5783    TBuf<4> Networkcountrycode1 = _L("1000");
       
  5784      TBuf<8> Networkidentitycode1 = _L("10000000");
       
  5785      TUint Locationareacode1 = 100;
       
  5786      TUint CellId1 = 100;
       
  5787          
       
  5788      CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5789                                                          Networkcountrycode1,
       
  5790                                                          Networkidentitycode1,
       
  5791                                                          Locationareacode1,
       
  5792                                                          CellId1
       
  5793                                                              );
       
  5794      TBuf<4> Networkcountrycode2 = _L("2000");
       
  5795      TBuf<8> Networkidentitycode2 = _L("20000000");
       
  5796      TUint Locationareacode2 = 200;
       
  5797      TUint CellId2 = 200;
       
  5798          
       
  5799      CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5800                                                          Networkcountrycode2,
       
  5801                                                          Networkidentitycode2,
       
  5802                                                          Locationareacode2,
       
  5803                                                          CellId2
       
  5804                                                              );
       
  5805      RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  5806                        Hybridareaarray1.Append(Cellarea1);
       
  5807                        Hybridareaarray1.Append(Cellarea2);
       
  5808      CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  5809   
       
  5810    TUid aManagerUi = TUid::Uid(0x87654321);     
       
  5811    // ownership of Cellarea object transferred to the condition object
       
  5812    CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  5813                                                Hybridarea,
       
  5814                                               CLbtTriggerConditionArea::EFireOnEnter);
       
  5815       
       
  5816      
       
  5817    trig->SetCondition(condition); // ownership transferred to object
       
  5818   
       
  5819    //set Requestor     
       
  5820    CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  5821    CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  5822    TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  5823    trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  5824    trig->SetManagerUi(aManagerUi);   
       
  5825       
       
  5826    CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt );
       
  5827    CleanupStack::PushL( notifier );
       
  5828   
       
  5829    CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  5830    TLbtTriggerId trigId,trigId2;   
       
  5831    notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
       
  5832    wait->Start( );
       
  5833   
       
  5834    //**************New Trigger Entry**************/ 
       
  5835    CLbtSessionTrigger* newtrig = CLbtSessionTrigger::NewL();
       
  5836    newtrig->SetNameL(_L("TriggerTest"));
       
  5837    newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
       
  5838    TBuf<4> Networkcountrycode3 = _L("3000");
       
  5839     TBuf<8> Networkidentitycode3 = _L("30000000");
       
  5840     TUint Locationareacode3 = 300;
       
  5841     TUint CellId3 = 300;
       
  5842         
       
  5843     CLbtGeoCell* Cellarea3  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5844                                                         Networkcountrycode3,
       
  5845                                                         Networkidentitycode3,
       
  5846                                                         Locationareacode3,
       
  5847                                                         CellId3
       
  5848                                                             );
       
  5849     TBuf<4> Networkcountrycode4 = _L("4000");
       
  5850     TBuf<8> Networkidentitycode4 = _L("40000000");
       
  5851     TUint Locationareacode4 = 400;
       
  5852     TUint CellId4 = 400;
       
  5853         
       
  5854     CLbtGeoCell* Cellarea4  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  5855                                                         Networkcountrycode4,
       
  5856                                                         Networkidentitycode4,
       
  5857                                                         Locationareacode4,
       
  5858                                                         CellId4
       
  5859                                                             );
       
  5860     RPointerArray<CLbtGeoAreaBase> Hybridareaarray2 ;
       
  5861                            Hybridareaarray2.Append(Cellarea3);
       
  5862                            Hybridareaarray2.Append(Cellarea4);
       
  5863     CLbtGeoHybrid* Hybridarea2  = CLbtGeoHybrid::NewL(Hybridareaarray2);
       
  5864    // ownership of Cellarea object transferred to the condition object
       
  5865    CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
       
  5866                                                Hybridarea2,
       
  5867                                               CLbtTriggerConditionArea::EFireOnEnter);
       
  5868       
       
  5869       
       
  5870    newtrig->SetCondition(newcondition); // ownership transferred to object
       
  5871    //  trigId = 1;
       
  5872    newtrig->SetId(trigId);
       
  5873   
       
  5874    /***************************End*******************/
       
  5875    iLog->Log(_L("Before UpdateTriggerL "));
       
  5876    notifier->UpdateTrigger(lbt,*newtrig,CLbtTriggerEntry::EAttributeName
       
  5877                |CLbtTriggerEntry::EAttributeState
       
  5878                |CLbtTriggerEntry::EAttributeCondition ,wait,ELbtTrue
       
  5879                );
       
  5880    wait->Start( );
       
  5881    iLog->Log(_L("After UpdateTriggerL "));
       
  5882   
       
  5883    iLog->Log(_L("Before GetTriggerLC "));
       
  5884    CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
       
  5885    Triginfo = lbt.GetTriggerLC(trigId);
       
  5886    iLog->Log(_L("After GetTriggerLC "));
       
  5887    CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  5888   
       
  5889    TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
       
  5890    //Check the name of the trigger
       
  5891    TDesC Name2 =TrigEntry->Name(); 
       
  5892    if(TrigEntry->Name()!=newtrig->Name()) 
       
  5893        {
       
  5894       return -99;
       
  5895        }
       
  5896   //Check the state of the trigger
       
  5897    CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
       
  5898    if(State2 !=newtrig->State())
       
  5899        {
       
  5900       return -99;
       
  5901        }
       
  5902    //Check type of the trigger
       
  5903    TInt Type2 = TrigEntry ->Type();
       
  5904    if(Type2 != newtrig->Type())
       
  5905        {
       
  5906       return -99;
       
  5907        }
       
  5908    //Check Condition of the trigger
       
  5909   
       
  5910    CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  5911   
       
  5912    CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  5913     AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  5914     CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  5915              RPointerArray<CLbtGeoAreaBase> Hybridareaarray3= area->HybridArea();
       
  5916    CLbtGeoAreaBase* base=Hybridareaarray3[0];
       
  5917            
       
  5918    CLbtGeoCell* cell2=NULL;
       
  5919    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  5920    {
       
  5921        cell2= static_cast<CLbtGeoCell*> (base);
       
  5922    }    
       
  5923    
       
  5924    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  5925    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode3,_L("Wrong Network Country code"));   
       
  5926    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode3,_L("Wrong Network identity code"));            
       
  5927    AssertTrueL(cell2->LocationAreaCode()==Locationareacode3,_L("Wrong Location Area code"));   
       
  5928    AssertTrueL(cell2->CellId()==CellId3,_L("Wrong Cellid"));      
       
  5929    
       
  5930    base=Hybridareaarray3[1];
       
  5931            
       
  5932    cell2=NULL;
       
  5933    if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  5934    {
       
  5935        cell2= static_cast<CLbtGeoCell*> (base);
       
  5936    }    
       
  5937    
       
  5938    AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  5939    AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode4,_L("Wrong Network Country code"));   
       
  5940    AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode4,_L("Wrong Network identity code"));            
       
  5941    AssertTrueL(cell2->LocationAreaCode()==Locationareacode4,_L("Wrong Location Area code"));   
       
  5942    AssertTrueL(cell2->CellId()==CellId4,_L("Wrong Cellid"));        
       
  5943   //}
       
  5944   //Check trigger Id
       
  5945    trigId2 = TrigEntry->Id();
       
  5946    if(trigId !=trigId2)
       
  5947        {
       
  5948       return -99;
       
  5949        }
       
  5950   
       
  5951    CleanupStack::PopAndDestroy( 1 );//Triginfo
       
  5952    CleanupStack::PopAndDestroy( notifier );
       
  5953    CleanupStack::PopAndDestroy( trig );
       
  5954   // #endif
       
  5955    CleanupStack::Pop( &lbt );
       
  5956    lbt.Close();
       
  5957   
       
  5958    CleanupStack::PopAndDestroy( &lbtserver );
       
  5959   // //delete wait;
       
  5960   
       
  5961   iLog->Log(_L("Test passed "));
       
  5962   return KErrNone; 
       
  5963     
       
  5964   }
       
  5965 // -----------------------------------------------------------------------------
       
  5966 // CTestHybridTriggers::TC_TestUpdateTrigger5L
       
  5967 // Updating Hybrid startup trigger to a coordinate based startup trigger.
       
  5968 // (other items were commented in a header).
       
  5969 // -----------------------------------------------------------------------------
       
  5970  
       
  5971     TInt CTestHybridTriggers::TC_TestUpdateTrigger5L( CStifItemParser& /* aItem */ )
       
  5972     {
       
  5973 
       
  5974     
       
  5975      RLbtServer lbtserver;
       
  5976      RLbt lbt;
       
  5977      iLog->Log(_L("Before Connect "));
       
  5978      User::LeaveIfError( lbtserver.Connect() );
       
  5979      iLog->Log(_L("After Connect "));
       
  5980      CleanupClosePushL( lbtserver );
       
  5981      
       
  5982      User::LeaveIfError( lbt.Open( lbtserver ) );
       
  5983      CleanupClosePushL( lbt );
       
  5984      iLog->Log(_L("After RLbt::Open "));
       
  5985     
       
  5986  //   #if 0
       
  5987       //Construct a startup trigger
       
  5988     CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
       
  5989     
       
  5990     //Push to cleanup stack
       
  5991     CleanupStack::PushL( trig );
       
  5992     
       
  5993     // Set Name
       
  5994     trig->SetNameL(_L("Trigger1"));
       
  5995     _LIT( KMyTriggerHandlingProcessName, "LbtReference.exe" );
       
  5996     
       
  5997     TSecureId secureid;
       
  5998     trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  5999        
       
  6000     // set condition
       
  6001     
       
  6002     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  6003     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  6004     CleanupStack::PushL( notifier );
       
  6005     TBuf<4> Networkcountrycode1 = _L("1000");
       
  6006     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  6007     TUint Locationareacode1 = 100;
       
  6008     TUint CellId1 = 100;
       
  6009           
       
  6010     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  6011                                                           Networkcountrycode1,
       
  6012                                                           Networkidentitycode1,
       
  6013                                                           Locationareacode1,
       
  6014                                                           CellId1
       
  6015                                                               );
       
  6016     TBuf<4> Networkcountrycode2 = _L("2000");
       
  6017     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  6018     TUint Locationareacode2 = 200;
       
  6019     TUint CellId2 = 200;
       
  6020           
       
  6021     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  6022                                                           Networkcountrycode2,
       
  6023                                                           Networkidentitycode2,
       
  6024                                                           Locationareacode2,
       
  6025                                                           CellId2
       
  6026                                                               );
       
  6027     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  6028                       Hybridareaarray1.Append(Cellarea1);
       
  6029                       Hybridareaarray1.Append(Cellarea2);
       
  6030     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  6031     TUid aManagerUi = TUid::Uid(0x87654321);     
       
  6032     // ownership of Cellarea object transferred to the condition object
       
  6033     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  6034                                                 Hybridarea,
       
  6035                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  6036         
       
  6037        
       
  6038     trig->SetCondition(condition); // ownership transferred to object
       
  6039 
       
  6040     
       
  6041     trig->SetManagerUi(aManagerUi);   
       
  6042      //set Requestor     
       
  6043     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  6044     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  6045     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  6046     trig->SetRequestorL(ReqType,ReqFormat,ReqData);      
       
  6047     TLbtTriggerId trigId,trigId2;   
       
  6048     notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
       
  6049     wait->Start( );
       
  6050     User::After(5000000);
       
  6051     
       
  6052    //**************New Trigger Entry**************/ 
       
  6053     CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
       
  6054     newtrig->SetNameL(_L("TriggerTest"));
       
  6055     newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
       
  6056     newtrig->SetCommandLineL(_L("Commandline2" ));
       
  6057     TCoordinate newcoordinate(0,0);
       
  6058     
       
  6059     CLbtGeoCircle* newcircle=CLbtGeoCircle::NewL(newcoordinate,500);
       
  6060     CleanupStack::PushL( newcircle );
       
  6061          
       
  6062     // ownership of circle object transferred to the condition object
       
  6063     CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
       
  6064                                                 newcircle,
       
  6065                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  6066         
       
  6067     CleanupStack::Pop( newcircle );
       
  6068     
       
  6069     newtrig->SetCondition(newcondition); // ownership transferred to object
       
  6070 //  trigId = 1;
       
  6071     newtrig->SetId(trigId);
       
  6072    
       
  6073     /***************************End*******************/
       
  6074     iLog->Log(_L("Before UpdateTriggerL "));
       
  6075     lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
       
  6076     |CLbtTriggerEntry::EAttributeState
       
  6077     |CLbtTriggerEntry::EAttributeCondition,ELbtTrue);
       
  6078    // lbt.UpdateTriggerL(*newtrig);
       
  6079     iLog->Log(_L("After UpdateTriggerL "));
       
  6080     
       
  6081     iLog->Log(_L("Before GetTriggerLC "));
       
  6082     CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
       
  6083     Triginfo = lbt.GetTriggerLC(trigId);
       
  6084     iLog->Log(_L("After GetTriggerLC "));
       
  6085     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  6086     
       
  6087     TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
       
  6088     //Check the name of the trigger
       
  6089     TDesC Name2 =TrigEntry->Name(); 
       
  6090     if(TrigEntry->Name()!=newtrig->Name()) 
       
  6091     {
       
  6092         iLog->Log(_L("wrong name "));
       
  6093         return -99;
       
  6094     }
       
  6095     //Check the state of the trigger
       
  6096     CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
       
  6097     if(State2 !=newtrig->State())
       
  6098     {
       
  6099         iLog->Log(_L("wrong state "));
       
  6100         return -99;
       
  6101     }
       
  6102     //Check type of the trigger
       
  6103     TInt Type2 = TrigEntry ->Type();
       
  6104     if(Type2 != newtrig->Type())
       
  6105     {
       
  6106         iLog->Log(_L("wrong type "));
       
  6107         return -99;
       
  6108     }
       
  6109     //Check Condition of the trigger
       
  6110     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  6111     CLbtTriggerConditionArea::TDirection direction;
       
  6112     direction = Condition2->Direction();
       
  6113     if(direction!=CLbtTriggerConditionArea::EFireOnEnter)
       
  6114     {
       
  6115         iLog->Log(_L("wrong Direction "));
       
  6116         return -99;
       
  6117     }
       
  6118     CLbtGeoAreaBase* area = Condition2->TriggerArea();
       
  6119     if(area ->Type()!=CLbtGeoAreaBase::ECircle )
       
  6120     {
       
  6121     CleanupStack::PopAndDestroy( 1 );//Triginfo
       
  6122     CleanupStack::PopAndDestroy( notifier );
       
  6123     CleanupStack::PopAndDestroy( trig );
       
  6124    
       
  6125     CleanupStack::Pop( &lbt );
       
  6126     lbt.Close();
       
  6127     
       
  6128     CleanupStack::PopAndDestroy( &lbtserver );
       
  6129     iLog->Log(_L("wrong area type "));
       
  6130         return -99;
       
  6131     }
       
  6132     
       
  6133     CLbtGeoCircle* circle2 = static_cast <CLbtGeoCircle*>(area);
       
  6134     TCoordinate center = newcircle->Center();
       
  6135     TCoordinate center2 = circle2->Center();
       
  6136     TReal32 distance;
       
  6137     center2.Distance(center,distance);
       
  6138     if(distance!=0)
       
  6139     {
       
  6140         iLog->Log(_L("wrong center "));
       
  6141         return -99;
       
  6142     }
       
  6143     TReal radius = circle2->Radius();
       
  6144     if(radius != newcircle->Radius())
       
  6145     {
       
  6146         iLog->Log(_L("wrong radius "));
       
  6147         return -99;
       
  6148     }
       
  6149     
       
  6150     
       
  6151 
       
  6152     //Check trigger Id
       
  6153     trigId2 = TrigEntry->Id();
       
  6154     if(trigId !=trigId2)
       
  6155     {
       
  6156         iLog->Log(_L("wrong trigger id "));
       
  6157         return -99;
       
  6158     }
       
  6159     
       
  6160     CleanupStack::PopAndDestroy( 1 );//Triginfo
       
  6161     CleanupStack::PopAndDestroy( notifier );
       
  6162     CleanupStack::PopAndDestroy( trig );
       
  6163    
       
  6164     CleanupStack::Pop( &lbt );
       
  6165     lbt.Close();
       
  6166     
       
  6167     CleanupStack::PopAndDestroy( &lbtserver );
       
  6168    
       
  6169    
       
  6170     iLog->Log(_L("Test passed "));
       
  6171     return KErrNone; 
       
  6172       
       
  6173     }
       
  6174     
       
  6175     // -----------------------------------------------------------------------------
       
  6176     // CTestHybridTriggers::TC_TestUpdateTrigger4L
       
  6177     // Updating coordinate based to a Wlan based startup trigger
       
  6178     // (other items were commented in a header).
       
  6179     // -----------------------------------------------------------------------------
       
  6180      //
       
  6181     
       
  6182       TInt CTestHybridTriggers::TC_TestUpdateTrigger6L( CStifItemParser& /* aItem */ )
       
  6183     {
       
  6184 
       
  6185     
       
  6186      RLbtServer lbtserver;
       
  6187      RLbt lbt;
       
  6188      iLog->Log(_L("Before Connect "));
       
  6189      User::LeaveIfError( lbtserver.Connect() );
       
  6190      iLog->Log(_L("After Connect "));
       
  6191      CleanupClosePushL( lbtserver );
       
  6192      
       
  6193      User::LeaveIfError( lbt.Open( lbtserver ) );
       
  6194      CleanupClosePushL( lbt );
       
  6195      iLog->Log(_L("After RLbt::Open "));
       
  6196     
       
  6197     TBuf<4> Networkcountrycode = _L("404");
       
  6198     TBuf<8> Networkidentitycode = _L("45");
       
  6199 //    TUint Locationareacode = 1627;
       
  6200  //   TUint CellId = 40331;
       
  6201  
       
  6202  //   #if 0
       
  6203       //Construct a startup trigger
       
  6204     CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
       
  6205     
       
  6206     //Push to cleanup stack
       
  6207     CleanupStack::PushL( trig );
       
  6208     
       
  6209     // Set Name
       
  6210     trig->SetNameL(_L("Trigger1"));
       
  6211     _LIT( KMyTriggerHandlingProcessName, "LbtReference.exe" );
       
  6212     
       
  6213     TSecureId secureid;
       
  6214     trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  6215        
       
  6216     // set condition
       
  6217     
       
  6218     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  6219     CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  6220     CleanupStack::PushL( notifier );
       
  6221     
       
  6222     // set condition
       
  6223     
       
  6224     TCoordinate coordinate(62.5285,23.9385);
       
  6225     
       
  6226     CLbtGeoCircle* circle=CLbtGeoCircle::NewL(coordinate,1000);
       
  6227     CleanupStack::PushL( circle );
       
  6228     
       
  6229   //  TUid aManagerUi = TUid::Uid(0x87654321);     
       
  6230     // ownership of circle object transferred to the condition object
       
  6231     CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  6232                                                 circle,
       
  6233                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  6234         
       
  6235     CleanupStack::Pop( circle );
       
  6236     
       
  6237     trig->SetCondition(condition); // ownership transferred to object
       
  6238 
       
  6239     
       
  6240     TUid aManagerUi = TUid::Uid(0x87654321);   
       
  6241     trig->SetManagerUi(aManagerUi);   
       
  6242      //set Requestor     
       
  6243     CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  6244     CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  6245     TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  6246     trig->SetRequestorL(ReqType,ReqFormat,ReqData);      
       
  6247     TLbtTriggerId trigId,trigId2;   
       
  6248     notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
       
  6249     wait->Start( );
       
  6250     User::After(5000000);
       
  6251     
       
  6252    //**************New Trigger Entry**************/ 
       
  6253     CLbtStartupTrigger* newtrig = CLbtStartupTrigger::NewL();
       
  6254     newtrig->SetNameL(_L("TriggerTest"));
       
  6255     newtrig->SetState(CLbtTriggerEntry::EStateDisabled);
       
  6256     // CLbtGeoCell* Cellarea = NULL; 
       
  6257    /* CLbtGeoAreaBase * base = NULL;//static_cast<CLbtGeoAreaBase*>(Cellarea);
       
  6258     CLBTOperation *LBTOperation = notifier->CreateGeoAreaForCurrentLocationL(CLbtGeoAreaBase::ECellular, 
       
  6259                                                                              &base,
       
  6260                                                                              wait);
       
  6261     wait->Start( );
       
  6262     delete LBTOperation;
       
  6263     
       
  6264       
       
  6265     // ownership of Cellarea object transferred to the condition object
       
  6266     CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
       
  6267                                                 base,
       
  6268                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  6269         
       
  6270        
       
  6271     newtrig->SetCondition(newcondition); // ownership transferred to object
       
  6272 */
       
  6273     TBuf<4> Networkcountrycode1 = _L("1000");
       
  6274     TBuf<8> Networkidentitycode1 = _L("10000000");
       
  6275     TUint Locationareacode1 = 100;
       
  6276     TUint CellId1 = 100;
       
  6277           
       
  6278     CLbtGeoCell* Cellarea1  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  6279                                                           Networkcountrycode1,
       
  6280                                                           Networkidentitycode1,
       
  6281                                                           Locationareacode1,
       
  6282                                                           CellId1
       
  6283                                                               );
       
  6284     TBuf<4> Networkcountrycode2 = _L("2000");
       
  6285     TBuf<8> Networkidentitycode2 = _L("20000000");
       
  6286     TUint Locationareacode2 = 200;
       
  6287     TUint CellId2 = 200;
       
  6288           
       
  6289     CLbtGeoCell* Cellarea2  = CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  6290                                                           Networkcountrycode2,
       
  6291                                                           Networkidentitycode2,
       
  6292                                                           Locationareacode2,
       
  6293                                                           CellId2
       
  6294                                                               );
       
  6295     RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  6296                       Hybridareaarray1.Append(Cellarea1);
       
  6297                       Hybridareaarray1.Append(Cellarea2);
       
  6298     CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  6299     // ownership of Cellarea object transferred to the condition object
       
  6300     CLbtTriggerConditionArea* newcondition=CLbtTriggerConditionArea::NewL(
       
  6301                                                 Hybridarea,
       
  6302                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  6303         
       
  6304         
       
  6305     newtrig->SetCondition(newcondition); // ownership transferred to object
       
  6306 //  trigId = 1;
       
  6307     newtrig->SetId(trigId);
       
  6308    
       
  6309     /***************************End*******************/
       
  6310     iLog->Log(_L("Before UpdateTriggerL "));
       
  6311     lbt.UpdateTriggerL(*newtrig,CLbtTriggerEntry::EAttributeName
       
  6312     |CLbtTriggerEntry::EAttributeState
       
  6313     |CLbtTriggerEntry::EAttributeCondition,ELbtTrue);
       
  6314    // lbt.UpdateTriggerL(*newtrig);
       
  6315     iLog->Log(_L("After UpdateTriggerL "));
       
  6316     
       
  6317     iLog->Log(_L("Before GetTriggerLC "));
       
  6318     CLbtTriggerInfo *Triginfo = CLbtTriggerInfo::NewL();
       
  6319     Triginfo = lbt.GetTriggerLC(trigId);
       
  6320     iLog->Log(_L("After GetTriggerLC "));
       
  6321     CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  6322     
       
  6323     TLbtTriggerDynamicInfo * dyninfo = Triginfo -> DynInfo() ;
       
  6324     //Check the name of the trigger
       
  6325     TDesC Name2 =TrigEntry->Name(); 
       
  6326     if(TrigEntry->Name()!=newtrig->Name()) 
       
  6327     {
       
  6328         return -99;
       
  6329     }
       
  6330     iLog->Log(_L("Name OK "));
       
  6331     //Check the state of the trigger
       
  6332     CLbtTriggerEntry::TLbtTriggerState State2 = TrigEntry->State() ;  
       
  6333     if(State2 !=newtrig->State())
       
  6334     {
       
  6335         return -99;
       
  6336     }
       
  6337      iLog->Log(_L("State OK "));
       
  6338     //Check type of the trigger
       
  6339     TInt Type2 = TrigEntry ->Type();
       
  6340     if(Type2 != newtrig->Type())
       
  6341     {
       
  6342         return -99;
       
  6343     }
       
  6344     
       
  6345     //Check Condition of the trigger
       
  6346     
       
  6347     CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  6348     iLog->Log(_L("condition OK "));
       
  6349     CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  6350      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  6351      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  6352               RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  6353     CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  6354             
       
  6355     CLbtGeoCell* cell2=NULL;
       
  6356     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  6357     {
       
  6358         cell2= static_cast<CLbtGeoCell*> (base);
       
  6359     }    
       
  6360     
       
  6361     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  6362     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  6363     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  6364     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  6365     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));      
       
  6366     
       
  6367     base=Hybridareaarray2[1];
       
  6368             
       
  6369     cell2=NULL;
       
  6370     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  6371     {
       
  6372         cell2= static_cast<CLbtGeoCell*> (base);
       
  6373     }    
       
  6374     
       
  6375     AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  6376     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  6377     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  6378     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  6379     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));        
       
  6380     //}
       
  6381     //Check trigger Id
       
  6382     trigId2 = TrigEntry->Id();
       
  6383     if(trigId !=trigId2)
       
  6384     {
       
  6385         return -99;
       
  6386     }
       
  6387     
       
  6388     CleanupStack::PopAndDestroy( 1 );//Triginfo
       
  6389     CleanupStack::PopAndDestroy( notifier );
       
  6390     CleanupStack::PopAndDestroy( trig );
       
  6391    // #endif
       
  6392     CleanupStack::Pop( &lbt );
       
  6393     lbt.Close();
       
  6394     
       
  6395     CleanupStack::PopAndDestroy( &lbtserver );
       
  6396    // //delete wait;
       
  6397    
       
  6398     iLog->Log(_L("Test passed "));
       
  6399     return KErrNone; 
       
  6400       
       
  6401     }
       
  6402       
       
  6403   // -----------------------------------------------------------------------------
       
  6404   // CTestHybridTriggers::TC_TestHybridTriggerFiring1L
       
  6405   // Creation of hybrid Entry type startup trigger
       
  6406   // (other items were commented in a header).
       
  6407   // -----------------------------------------------------------------------------
       
  6408   //
       
  6409   TInt CTestHybridTriggers ::TC_TestHybridTriggerFiring1L(CStifItemParser& /*aItem*/)
       
  6410       {
       
  6411        RLbtServer lbtserver;
       
  6412        RLbt lbt;
       
  6413        iLog->Log(_L("Before connecting"));
       
  6414        User::LeaveIfError( lbtserver.Connect() );
       
  6415        CleanupClosePushL( lbtserver );
       
  6416        iLog->Log(_L("Connection to RLbtServer Passed "));
       
  6417        User::LeaveIfError( lbt.Open(lbtserver));
       
  6418        iLog->Log(_L("Subsession opened "));
       
  6419        CleanupClosePushL( lbt );
       
  6420    
       
  6421         //Construct a startup trigger
       
  6422        CLbtStartupTrigger* trig = CLbtStartupTrigger::NewL();
       
  6423       
       
  6424       //Push to cleanup stack
       
  6425        CleanupStack::PushL( trig );
       
  6426        iLog->Log(_L("Startup Trigger Entry Created "));
       
  6427       
       
  6428       // Set Name
       
  6429        trig->SetNameL(_L("Trigger1"));
       
  6430      
       
  6431        _LIT( KMyTriggerHandlingProcessName, "About.exe");
       
  6432     
       
  6433       
       
  6434        TSecureId secureid;
       
  6435        trig->SetProcessId(KMyTriggerHandlingProcessName,secureid);
       
  6436          
       
  6437        //set Requestor     
       
  6438        CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  6439        CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  6440        TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  6441        trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  6442       // set condition
       
  6443        CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  6444        RFileLogger aLog;
       
  6445        CLbtAppCgiRequestor* CGIRequest=CLbtAppCgiRequestor::NewL(aLog);
       
  6446        CleanupStack::PushL( CGIRequest );  
       
  6447        CGIRequest->Start(wait);
       
  6448        wait->Start( );
       
  6449        iLog->Log(_L("First CGI Info received"));
       
  6450        CTelephony::TNetworkInfoV1Pckg currcgi1=CGIRequest->CurrentCGI();
       
  6451       
       
  6452 
       
  6453        //CLbtGeoCell* Cellarea2;
       
  6454        CTelephony::TNetworkMode Networkmode = currcgi1().iMode;
       
  6455        TUint cellid1=currcgi1().iCellId;
       
  6456        CLbtGeoCell*  Cellarea1=NULL;  
       
  6457        RFileLogger::WriteFormat(KLbtTraceDir, KLbtTraceFile, EFileLoggingModeAppend,_L( "Current Cell Id= %d"),cellid1);
       
  6458        if(Networkmode ==CTelephony::ENetworkModeGsm)
       
  6459        {
       
  6460        Cellarea1= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  6461                currcgi1().iCountryCode,
       
  6462                currcgi1().iNetworkId,
       
  6463                currcgi1().iLocationAreaCode,
       
  6464                currcgi1().iCellId
       
  6465                                      );  
       
  6466        }
       
  6467        /*
       
  6468        //wait for CID change notification
       
  6469         CLbtEventObserver* notifier2= CLbtEventObserver::NewL( lbt);
       
  6470         CleanupStack::PushL( notifier2 );
       
  6471         CActiveSchedulerWait* wait2=new(ELeave)CActiveSchedulerWait;
       
  6472         notifier2->StartCidNotification(wait2);
       
  6473         iLog->Log(_L("Cell id change notification requested"));
       
  6474         wait2->Start();
       
  6475         iLog->Log(_L("Cell id change Notification received"));
       
  6476         //CID changed
       
  6477         CleanupStack::PopAndDestroy( notifier2 );
       
  6478        CGIRequest->Start(wait);
       
  6479        wait->Start( );
       
  6480        iLog->Log(_L("Second CGI Received"));
       
  6481        CTelephony::TNetworkInfoV1Pckg currcgi2 = CGIRequest->CurrentCGI();
       
  6482        Networkmode = currcgi2().iMode;
       
  6483        TUint cellid2=currcgi2().iCellId;
       
  6484        CLbtGeoCell* Cellarea2;
       
  6485        if(Networkmode ==CTelephony::ENetworkModeGsm)
       
  6486           {
       
  6487           Cellarea2= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  6488                   currcgi2().iCountryCode,
       
  6489                   currcgi2().iNetworkId,
       
  6490                   currcgi2().iLocationAreaCode,
       
  6491                   currcgi2().iCellId
       
  6492                                         );  
       
  6493           }*/
       
  6494        
       
  6495        CLbtGeoCell* Cellarea2=NULL;
       
  6496        TUint CellId1 = 100;
       
  6497           if(Networkmode ==CTelephony::ENetworkModeGsm)
       
  6498              {
       
  6499              Cellarea2= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  6500                      currcgi1().iCountryCode,
       
  6501                      currcgi1().iNetworkId,
       
  6502                      currcgi1().iLocationAreaCode,
       
  6503                      CellId1
       
  6504                                            );  
       
  6505              }
       
  6506        RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  6507                              Hybridareaarray1.Append(Cellarea1);
       
  6508                              Hybridareaarray1.Append(Cellarea2);
       
  6509          CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  6510       
       
  6511       
       
  6512       // ownership of Cellarea object transferred to the condition object
       
  6513        CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  6514                                                    Hybridarea,
       
  6515                                                   CLbtTriggerConditionArea::EFireOnEnter);
       
  6516           
       
  6517        trig->SetCondition(condition); // ownership transferred to object
       
  6518       iLog->Log(_L("Trigger condition created"));
       
  6519        TLbtTriggerId trigId;
       
  6520           
       
  6521           
       
  6522        CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  6523        CleanupStack::PushL( notifier );
       
  6524       
       
  6525                  
       
  6526        notifier->CreateTriggers( lbt,*trig,trigId,EFalse,wait );
       
  6527        wait->Start( );
       
  6528        iLog->Log(_L("Trigger Created"));
       
  6529        notifier->StartNotification( wait );
       
  6530        wait->Start( );
       
  6531        iLog->Log(_L("Trigger Fired"));
       
  6532        
       
  6533        TLbtTriggerFireInfo FireInfo;
       
  6534 //       TReal32 trigDistance;
       
  6535        TPosition firePosition;
       
  6536        FireInfo = notifier->GetFiredTrigger();
       
  6537         
       
  6538        CLbtTriggerInfo *Triginfo ;
       
  6539        iLog->Log(_L("Before GetTriggerLC "));
       
  6540       
       
  6541        Triginfo= lbt.GetTriggerLC(FireInfo.iTriggerId);
       
  6542        
       
  6543        CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  6544        CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  6545        CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  6546        AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  6547        CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  6548                      RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  6549       
       
  6550       //CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  6551               
       
  6552       /*CLbtGeoCell* cell2=NULL;
       
  6553       if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  6554       {
       
  6555           cell2= static_cast<CLbtGeoCell*> (base);
       
  6556       }    */
       
  6557       
       
  6558       /*AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  6559       AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  6560       AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  6561       AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  6562       AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));   */   
       
  6563       
       
  6564      /* base=Hybridareaarray2[1];
       
  6565               
       
  6566       cell2=NULL;
       
  6567       if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  6568       {
       
  6569           cell2= static_cast<CLbtGeoCell*> (base);
       
  6570       }  */  
       
  6571       
       
  6572      /* AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  6573       AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  6574       AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  6575       AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  6576       AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));     */      
       
  6577        CleanupStack::Pop(Triginfo);
       
  6578        //CleanupStack::PopAndDestroy( notifier2 );
       
  6579        CleanupStack::PopAndDestroy( notifier );
       
  6580        CleanupStack::PopAndDestroy( CGIRequest );
       
  6581        CleanupStack::PopAndDestroy( trig );
       
  6582        CleanupStack::Pop( &lbt );
       
  6583        CleanupStack::PopAndDestroy( &lbtserver );
       
  6584       //delete wait;
       
  6585        return KErrNone;
       
  6586       
       
  6587       }
       
  6588 
       
  6589   // -----------------------------------------------------------------------------
       
  6590   // CTestHybridTriggers::TC_TestCreatetrigger2L
       
  6591   // Creation of hybrid Entry type session trigger
       
  6592   // (other items were commented in a header).
       
  6593   // -----------------------------------------------------------------------------
       
  6594   //
       
  6595   TInt CTestHybridTriggers ::TC_TestHybridTriggerFiring2L(CStifItemParser& /*aItem*/)
       
  6596       {
       
  6597       RLbtServer lbtserver;
       
  6598      RLbt lbt;
       
  6599      iLog->Log(_L("Before connecting"));
       
  6600      User::LeaveIfError( lbtserver.Connect() );
       
  6601      CleanupClosePushL( lbtserver );
       
  6602      iLog->Log(_L("Connection to RLbtServer Passed "));
       
  6603      User::LeaveIfError( lbt.Open(lbtserver));
       
  6604      iLog->Log(_L("Subsession opened "));
       
  6605      CleanupClosePushL( lbt );
       
  6606  
       
  6607       //Construct a startup trigger
       
  6608      CLbtSessionTrigger* trig = CLbtSessionTrigger::NewL();
       
  6609     
       
  6610     //Push to cleanup stack
       
  6611      CleanupStack::PushL( trig );
       
  6612      iLog->Log(_L("Startup Trigger Entry Created "));
       
  6613     
       
  6614     // Set Name
       
  6615      trig->SetNameL(_L("Trigger1"));
       
  6616    
       
  6617     
       
  6618      //set Requestor     
       
  6619      CRequestorBase::TRequestorType ReqType=CRequestorBase::ERequestorUnknown;
       
  6620      CRequestorBase::_TRequestorFormat ReqFormat=CRequestorBase::EFormatUnknown;
       
  6621      TBuf<KLbtMaxNameLength> ReqData=_L("");
       
  6622      trig->SetRequestorL(ReqType,ReqFormat,ReqData);
       
  6623     // set condition
       
  6624      CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  6625      RFileLogger aLog;
       
  6626      CLbtAppCgiRequestor* CGIRequest=CLbtAppCgiRequestor::NewL(aLog);
       
  6627      CleanupStack::PushL( CGIRequest );  
       
  6628      CGIRequest->Start(wait);
       
  6629      wait->Start( );
       
  6630      CTelephony::TNetworkInfoV1Pckg currcgi1=CGIRequest->CurrentCGI();
       
  6631     
       
  6632 
       
  6633      //CLbtGeoCell* Cellarea2;
       
  6634      CTelephony::TNetworkMode Networkmode = currcgi1().iMode;
       
  6635      TUint cellid1=currcgi1().iCellId;
       
  6636      RFileLogger::WriteFormat(KLbtTraceDir, KLbtTraceFile, EFileLoggingModeAppend,_L( "Current Cell Id= %d"),cellid1);
       
  6637      CLbtGeoCell*  Cellarea1=NULL;                                              
       
  6638      if(Networkmode ==CTelephony::ENetworkModeGsm)
       
  6639      {
       
  6640      Cellarea1= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  6641              currcgi1().iCountryCode,
       
  6642              currcgi1().iNetworkId,
       
  6643              currcgi1().iLocationAreaCode,
       
  6644              currcgi1().iCellId
       
  6645                                    );  
       
  6646      }
       
  6647      /*
       
  6648      //wait for CID change notification
       
  6649       CLbtEventObserver* notifier2= CLbtEventObserver::NewL( lbt);
       
  6650       CleanupStack::PushL( notifier2 );
       
  6651        
       
  6652       notifier2->StartCidNotification(wait);
       
  6653       iLog->Log(_L("Cell id change notification requested"));
       
  6654       wait->Start();
       
  6655       //CID changed
       
  6656       CleanupStack::PopAndDestroy( notifier2 );
       
  6657      CGIRequest->Start(wait);
       
  6658      wait->Start( );
       
  6659      CTelephony::TNetworkInfoV1Pckg currcgi2 = CGIRequest->CurrentCGI();
       
  6660      Networkmode = currcgi2().iMode;
       
  6661      TUint cellid2=currcgi2().iCellId;
       
  6662      CLbtGeoCell* Cellarea2;
       
  6663      if(Networkmode ==CTelephony::ENetworkModeGsm)
       
  6664         {
       
  6665         Cellarea2= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  6666                 currcgi2().iCountryCode,
       
  6667                 currcgi2().iNetworkId,
       
  6668                 currcgi2().iLocationAreaCode,
       
  6669                 currcgi2().iCellId
       
  6670                                       );  
       
  6671         }*/
       
  6672      CLbtGeoCell* Cellarea2=NULL;
       
  6673     TUint CellId1 = 100;
       
  6674        if(Networkmode ==CTelephony::ENetworkModeGsm)
       
  6675           {
       
  6676           Cellarea2= CLbtGeoCell::NewL(RMobilePhone :: ENetworkModeGsm,
       
  6677                   currcgi1().iCountryCode,
       
  6678                   currcgi1().iNetworkId,
       
  6679                   currcgi1().iLocationAreaCode,
       
  6680                   CellId1
       
  6681                                         );  
       
  6682           }
       
  6683      RPointerArray<CLbtGeoAreaBase> Hybridareaarray1 ;
       
  6684                            Hybridareaarray1.Append(Cellarea1);
       
  6685                            Hybridareaarray1.Append(Cellarea2);
       
  6686        CLbtGeoHybrid* Hybridarea  = CLbtGeoHybrid::NewL(Hybridareaarray1);
       
  6687     
       
  6688     
       
  6689     // ownership of Cellarea object transferred to the condition object
       
  6690      CLbtTriggerConditionArea* condition=CLbtTriggerConditionArea::NewL(
       
  6691                                                  Hybridarea,
       
  6692                                                 CLbtTriggerConditionArea::EFireOnEnter);
       
  6693         
       
  6694      trig->SetCondition(condition); // ownership transferred to object
       
  6695     
       
  6696      TLbtTriggerId trigId;
       
  6697         
       
  6698         
       
  6699      CTriggerFireObserver* notifier= CTriggerFireObserver::NewL( lbt);
       
  6700      CleanupStack::PushL( notifier );
       
  6701     
       
  6702                
       
  6703      notifier->CreateTriggers( lbt,*trig,trigId,ETrue,wait );
       
  6704      wait->Start( );
       
  6705      iLog->Log(_L("Trigger Created"));
       
  6706      notifier->StartNotification( wait );
       
  6707      wait->Start( );
       
  6708      iLog->Log(_L("Trigger Fired"));
       
  6709      
       
  6710      TLbtTriggerFireInfo FireInfo;
       
  6711     // TReal32 trigDistance;
       
  6712      TPosition firePosition;
       
  6713      FireInfo = notifier->GetFiredTrigger();
       
  6714       
       
  6715      CLbtTriggerInfo *Triginfo ;
       
  6716      iLog->Log(_L("Before GetTriggerLC "));
       
  6717     
       
  6718      Triginfo= lbt.GetTriggerLC(FireInfo.iTriggerId);
       
  6719      
       
  6720      CLbtTriggerEntry *TrigEntry = Triginfo->TriggerEntry();
       
  6721      CLbtTriggerConditionArea* Condition2 = static_cast <CLbtTriggerConditionArea*>(TrigEntry->GetCondition());
       
  6722      CLbtGeoAreaBase* TrigArea = Condition2->TriggerArea();
       
  6723      AssertTrueL(TrigArea->Type()==CLbtGeoAreaBase::EHybrid,_L("Wrong Type")); 
       
  6724      CLbtGeoHybrid *area =static_cast<CLbtGeoHybrid*>(TrigArea); 
       
  6725                    RPointerArray<CLbtGeoAreaBase> Hybridareaarray2= area->HybridArea();
       
  6726     
       
  6727     /*CLbtGeoAreaBase* base=Hybridareaarray2[0];
       
  6728             
       
  6729     CLbtGeoCell* cell2=NULL;
       
  6730     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  6731     {
       
  6732         cell2= static_cast<CLbtGeoCell*> (base);
       
  6733     }   */ 
       
  6734     
       
  6735     /*AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  6736     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode1,_L("Wrong Network Country code"));   
       
  6737     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode1,_L("Wrong Network identity code"));            
       
  6738     AssertTrueL(cell2->LocationAreaCode()==Locationareacode1,_L("Wrong Location Area code"));   
       
  6739     AssertTrueL(cell2->CellId()==CellId1,_L("Wrong Cellid"));   */   
       
  6740     
       
  6741    /* base=Hybridareaarray2[1];
       
  6742             
       
  6743     cell2=NULL;
       
  6744     if(base->Type()==CLbtGeoAreaBase::ECellular)
       
  6745     {
       
  6746         cell2= static_cast<CLbtGeoCell*> (base);
       
  6747     }   */ 
       
  6748     
       
  6749    /* AssertTrueL(cell2->NetworkType()==RMobilePhone::ENetworkModeGsm,_L("Wrong network Type")); 
       
  6750     AssertTrueL(cell2->NetworkCountryCode()==Networkcountrycode2,_L("Wrong Network Country code"));   
       
  6751     AssertTrueL(cell2->NetworkIdentityCode()==Networkidentitycode2,_L("Wrong Network identity code"));            
       
  6752     AssertTrueL(cell2->LocationAreaCode()==Locationareacode2,_L("Wrong Location Area code"));   
       
  6753     AssertTrueL(cell2->CellId()==CellId2,_L("Wrong Cellid"));     */      
       
  6754      CleanupStack::Pop(Triginfo);
       
  6755      //CleanupStack::PopAndDestroy( notifier2 );
       
  6756      CleanupStack::PopAndDestroy( notifier );
       
  6757      CleanupStack::PopAndDestroy( CGIRequest );
       
  6758      CleanupStack::PopAndDestroy( trig );
       
  6759      CleanupStack::Pop( &lbt );
       
  6760      CleanupStack::PopAndDestroy( &lbtserver );
       
  6761     //delete wait;
       
  6762      return KErrNone;
       
  6763      
       
  6764       }
       
  6765       
       
  6766     TInt CTestHybridTriggers::StartCellChangeNotifierL( CStifItemParser& /* aItem */ )
       
  6767     {
       
  6768    	RLbtServer lbtserver;
       
  6769     RLbt lbt;
       
  6770 	 iLog->Log(_L("Before connecting"));
       
  6771 	 User::LeaveIfError( lbtserver.Connect() );
       
  6772 	 CleanupClosePushL( lbtserver );
       
  6773 	 iLog->Log(_L("Connection to RLbtServer Passed "));
       
  6774 	 User::LeaveIfError( lbt.Open(lbtserver));
       
  6775 	 CleanupClosePushL( lbt );
       
  6776     CActiveSchedulerWait* wait=new(ELeave)CActiveSchedulerWait;
       
  6777  	
       
  6778  	CLbtEventObserver* notifier= CLbtEventObserver::NewL( lbt);
       
  6779 	CleanupStack::PushL( notifier );
       
  6780   
       
  6781     notifier->StartCidNotification(wait);
       
  6782     iLog->Log(_L("Cell id change notification requested"));
       
  6783     wait->Start();
       
  6784     CleanupStack::PopAndDestroy( notifier );
       
  6785 		
       
  6786 	CleanupStack::PopAndDestroy( &lbt );
       
  6787 	CleanupStack::PopAndDestroy( &lbtserver );
       
  6788     return KErrNone;
       
  6789     }  
       
  6790 
       
  6791 
       
  6792 
       
  6793 // -----------------------------------------------------------------------------
       
  6794 // CTestHybridTriggers::?member_function
       
  6795 // ?implementation_description
       
  6796 // (other items were commented in a header).
       
  6797 // -----------------------------------------------------------------------------
       
  6798 //
       
  6799 /*
       
  6800 TInt CTestHybridTriggers::?member_function(
       
  6801    CItemParser& aItem )
       
  6802    {
       
  6803 
       
  6804    ?code
       
  6805 
       
  6806    }
       
  6807 */
       
  6808 
       
  6809 // ========================== OTHER EXPORTED FUNCTIONS =========================
       
  6810 // None
       
  6811 
       
  6812 //  [End of File] - Do not remove