sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/src/SensrvTestBlocks.cpp
changeset 0 4e1aa6a622a0
child 34 b2f9f823b5fb
equal deleted inserted replaced
-1:000000000000 0:4e1aa6a622a0
       
     1 /*
       
     2 * Copyright (c) 2002 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:  ?Description
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 // INCLUDE FILES
       
    21 #include <e32svr.h>
       
    22 #include <StifParser.h>
       
    23 #include <Stiftestinterface.h>
       
    24 #include "SensrvTest.h"
       
    25 #include "sensrvchannelfinder.h"
       
    26 #include "sensrvchannel.h"
       
    27 #include "SensrvInternalPSKeys.h"
       
    28 #include "sensrvtestclient.h"
       
    29 #include "sensrvtestcases.h"
       
    30 #include "sensrvchanneldatatypes.h"
       
    31 #include "sensrvchannelcondition.h"
       
    32 #include "sensrvchannelconditionsetimpl.h"
       
    33 #include "sensrvtesttypes.h"
       
    34 #include "sensrvgeneralproperties.h"
       
    35 
       
    36 // EXTERNAL DATA STRUCTURES
       
    37 //extern  ?external_data;
       
    38 
       
    39 // EXTERNAL FUNCTION PROTOTYPES
       
    40 //extern ?external_function( ?arg_type,?arg_type );
       
    41 
       
    42 // CONSTANTS
       
    43 //const ?type ?constant_var = ?constant;
       
    44 
       
    45 // MACROS
       
    46 //#define ?macro ?macro_def
       
    47 
       
    48 // LOCAL CONSTANTS AND MACROS
       
    49 //const ?type ?constant_var = ?constant;
       
    50 //#define ?macro_name ?macro_def
       
    51 
       
    52 // MODULE DATA STRUCTURES
       
    53 //enum ?declaration
       
    54 //typedef ?declaration
       
    55 
       
    56 // LOCAL FUNCTION PROTOTYPES
       
    57 //?type ?function_name( ?arg_type, ?arg_type );
       
    58 
       
    59 // FORWARD DECLARATIONS
       
    60 //class ?FORWARD_CLASSNAME;
       
    61 
       
    62 // ============================= LOCAL FUNCTIONS ===============================
       
    63 
       
    64 // -----------------------------------------------------------------------------
       
    65 // ?function_name ?description.
       
    66 // ?description
       
    67 // Returns: ?value_1: ?description
       
    68 //          ?value_n: ?description_line1
       
    69 //                    ?description_line2
       
    70 // -----------------------------------------------------------------------------
       
    71 //
       
    72 /*
       
    73 ?type ?function_name(
       
    74     ?arg_type arg,  // ?description
       
    75     ?arg_type arg)  // ?description
       
    76     {
       
    77 
       
    78     ?code  // ?comment
       
    79 
       
    80     // ?comment
       
    81     ?code
       
    82     }
       
    83 */
       
    84 
       
    85 
       
    86 
       
    87 // ============================ MEMBER FUNCTIONS ===============================
       
    88 
       
    89 // -----------------------------------------------------------------------------
       
    90 // CSensrvTest::Delete
       
    91 // Delete here all resources allocated and opened from test methods.
       
    92 // Called from destructor.
       
    93 // -----------------------------------------------------------------------------
       
    94 //
       
    95 void CSensrvTest::Delete()
       
    96     {
       
    97     RDebug::Print( _L("CSensrvTest::Delete - START") );
       
    98 
       
    99     if( iTestCases )
       
   100         {
       
   101         TRequestStatus status;
       
   102         iThread.Logon( status );
       
   103         iTestCases->StopTest();
       
   104         RDebug::Print( _L("CSensrvTest::Delete - Waiting thread...") );
       
   105         User::WaitForRequest( status );
       
   106         }
       
   107 
       
   108 
       
   109     RDebug::Print( _L("CSensrvTest::Delete - END") );
       
   110     }
       
   111 
       
   112 // -----------------------------------------------------------------------------
       
   113 // CSensrvTest::RunMethodL
       
   114 // Run specified method. Contains also table of test mothods and their names.
       
   115 // -----------------------------------------------------------------------------
       
   116 //
       
   117 
       
   118 
       
   119 TInt CSensrvTest::RunMethodL(
       
   120     CStifItemParser& aItem )
       
   121     {
       
   122 
       
   123     static TStifFunctionInfo const KFunctions[] =
       
   124         {
       
   125         // Copy this line for every implemented function.
       
   126         // First string is the function name used in TestScripter script file.
       
   127         // Second is the actual implementation member function.
       
   128             ENTRY( "SetPSValue", CSensrvTest::SetPSValue ),
       
   129             ENTRY( "SetCompletedKey", CSensrvTest::SetCompletedKeyL ),
       
   130             ENTRY( "SetGetDataDelay", CSensrvTest::SetGetDataDelay ),
       
   131             ENTRY( "WaitCompletedKey", CSensrvTest::WaitCompletedKey ),
       
   132             ENTRY( "ShutdownServer", CSensrvTest::ShutdownServer ),
       
   133             ENTRY( "StartServer", CSensrvTest::StartServer ),
       
   134             ENTRY( "CreateAndDestroyChannelFinder", CSensrvTest::CreateAndDestroyChannelFinderL ),
       
   135             ENTRY( "FindChannels", CSensrvTest::FindChannelsL ),
       
   136             ENTRY( "OpenChannel", CSensrvTest::OpenChannelL ),
       
   137             ENTRY( "CloseChannel", CSensrvTest::CloseChannelL ),
       
   138             ENTRY( "OpenClosePerformance", CSensrvTest::OpenClosePerformanceL ),
       
   139             ENTRY( "StartDataListening", CSensrvTest::StartDataListeningL ),
       
   140             ENTRY( "StopDataListening", CSensrvTest::StopDataListeningL ),
       
   141             ENTRY( "StartListeningWhenChannelIsNotOpen", CSensrvTest::StartListeningWhenChannelIsNotOpenL ),
       
   142             ENTRY( "PanicClient", CSensrvTest::PanicClient ),
       
   143             ENTRY( "GetProperty", CSensrvTest::GetPropertyL ),
       
   144             ENTRY( "SetProperty", CSensrvTest::SetPropertyL ),
       
   145             ENTRY( "StartPropertyListening", CSensrvTest::StartPropertyListeningL ),
       
   146             ENTRY( "StopPropertyListening", CSensrvTest::StopPropertyListeningL ),
       
   147             ENTRY( "GetAllProperties", CSensrvTest::GetAllPropertiesL ),
       
   148             ENTRY( "GetAllPropertiesWithPropertyId", CSensrvTest::GetAllPropertiesWithPropertyIdL ),
       
   149             ENTRY( "GetAllPropertiesWithArrayIndex", CSensrvTest::GetAllPropertiesWithArrayIndexL ),
       
   150             ENTRY( "WaitSSYUnloading", CSensrvTest::WaitSSYUnloading ),
       
   151             ENTRY( "CheckPropertyChangedCount", CSensrvTest::CheckPropertyChangedCount ),
       
   152             ENTRY( "ConditionUnitTest", CSensrvTest::ConditionUnitTestL ),
       
   153             ENTRY( "ConditionSetUnitTest", CSensrvTest::ConditionSetUnitTestL ),
       
   154             ENTRY( "AddCondition", CSensrvTest::AddConditionL ),
       
   155             ENTRY( "AddConditionSet", CSensrvTest::AddConditionSetL ),
       
   156             ENTRY( "RemoveConditions", CSensrvTest::RemoveConditionsL ),
       
   157             ENTRY( "StartConditionListening", CSensrvTest::StartConditionListeningL ),
       
   158             ENTRY( "CreateNewProcess", CSensrvTest::CreateNewProcess ),
       
   159             ENTRY( "KillProcess", CSensrvTest::KillProcess ),
       
   160             ENTRY( "SetProcessPSValue", CSensrvTest::SetProcessPSValue ),
       
   161             ENTRY( "StopConditionListening", CSensrvTest::StopConditionListeningL ),
       
   162             ENTRY( "CheckConditionMetCount", CSensrvTest::CheckConditionMetCount ),
       
   163             ENTRY( "CheckFoundChannelCount", CSensrvTest::CheckFoundChannelCount ),
       
   164             ENTRY( "StartChannelChangeListening", CSensrvTest::StartChannelChangeListeningL ),
       
   165             ENTRY( "StopChannelChangeListening", CSensrvTest::StopChannelChangeListeningL ),
       
   166             ENTRY( "AdjustChannels", CSensrvTest::AdjustChannelsL ),
       
   167             ENTRY( "GetPsResult", CSensrvTest::GetPsResult ),
       
   168             ENTRY( "StoreFoundChannels", CSensrvTest::StoreFoundChannelsL ),
       
   169             ENTRY( "GetPSValue", CSensrvTest::GetPSValue ),
       
   170             ENTRY( "CheckListenedSetPropertySuccessIndicator", CSensrvTest::CheckListenedSetPropertySuccessIndicator ),
       
   171             ENTRY( "CheckServerAlive", CSensrvTest::CheckServerAlive ),
       
   172             ENTRY( "SetDefaultValue", CSensrvTest::SetDefaultValueL),
       
   173             //Regression Tests
       
   174             ENTRY( "TestOpenClose", CSensrvTest::TestOpenClose),
       
   175             ENTRY( "TestOpenCloseSensorL", CSensrvTest::TestOpenCloseSensorL),
       
   176             ENTRY( "TestOpenCloseSensorsL", CSensrvTest::TestOpenCloseSensorsL),
       
   177             ENTRY( "TestOpenCloseCombinationSensorsL", CSensrvTest::TestOpenCloseCombinationSensorsL),
       
   178             ENTRY( "TestChannelsL", CSensrvTest::TestChannelsL),
       
   179             ENTRY( "TestChannelFinderL", CSensrvTest::TestChannelFinderL)
       
   180         };
       
   181 
       
   182     const TInt count = sizeof( KFunctions ) /
       
   183                         sizeof( TStifFunctionInfo );
       
   184 
       
   185 
       
   186     return RunInternalL( KFunctions, count, aItem );
       
   187 
       
   188     }
       
   189 
       
   190 TInt CSensrvTest::TestChannelsL( CStifItemParser& /*aItem*/ )
       
   191     {
       
   192     CSensrvChannelFinder* tempChannelFinder;
       
   193     CSensrvChannel* tempSensorChannel1;
       
   194     CSensrvChannel* tempSensorChannel2;
       
   195     CSensrvChannel* tempSensorChannel3;
       
   196     
       
   197     TInt err = CheckTest();
       
   198     if( err )
       
   199         {
       
   200         RDebug::Print( _L("CSensrvTest::TestOpenCloseL Test Creattion error: %d"), err );
       
   201         return err;
       
   202         }
       
   203     
       
   204     tempChannelFinder = CSensrvChannelFinder::NewL();    
       
   205             
       
   206     //List of found channels.
       
   207     RSensrvChannelInfoList tempChannelInfoList;
       
   208     TSensrvChannelInfo tempChannelInfo;
       
   209 
       
   210     tempChannelInfo.iChannelType = KSensrvChannelTypeIdAccelerometerXYZAxisData;
       
   211 
       
   212     //Find the channel
       
   213     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   214     //10 channels & wait for more than 10 seconds        
       
   215     tempSensorChannel1 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   216     tempSensorChannel2 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   217     tempSensorChannel3 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   218     
       
   219     for (TInt i =0; i <10; i++)
       
   220         {
       
   221         //Open the channel
       
   222         tempSensorChannel1->OpenChannelL();
       
   223         tempSensorChannel2->OpenChannelL();
       
   224         tempSensorChannel3->OpenChannelL();
       
   225             
       
   226         User::After(1000000);
       
   227                                 
       
   228         //Close the channel
       
   229         tempSensorChannel1->CloseChannel();
       
   230         tempSensorChannel2->CloseChannel();
       
   231         tempSensorChannel3->CloseChannel();
       
   232             
       
   233         User::After(7000000);
       
   234         }
       
   235     
       
   236     delete tempChannelFinder;
       
   237     delete tempSensorChannel1;
       
   238     delete tempSensorChannel2;
       
   239     delete tempSensorChannel3;
       
   240     
       
   241     return err;
       
   242     }
       
   243 
       
   244 TInt CSensrvTest::TestChannelFinderL( CStifItemParser& /*aItem*/ )
       
   245     {
       
   246     CSensrvChannelFinder* tempChannelFinder1;
       
   247     CSensrvChannelFinder* tempChannelFinder2;
       
   248     CSensrvChannelFinder* tempChannelFinder3;
       
   249     CSensrvChannelFinder* tempChannelFinder4;
       
   250     CSensrvChannelFinder* tempChannelFinder5;
       
   251     CSensrvChannelFinder* tempChannelFinder6;
       
   252     CSensrvChannelFinder* tempChannelFinder7;
       
   253     CSensrvChannelFinder* tempChannelFinder8;
       
   254     CSensrvChannelFinder* tempChannelFinder9;
       
   255     CSensrvChannelFinder* tempChannelFinder10;
       
   256     CSensrvChannelFinder* tempChannelFinder11;
       
   257     CSensrvChannelFinder* tempChannelFinder12;
       
   258     CSensrvChannelFinder* tempChannelFinder13;
       
   259     CSensrvChannelFinder* tempChannelFinder14;
       
   260     CSensrvChannelFinder* tempChannelFinder15;
       
   261     CSensrvChannelFinder* tempChannelFinder16;
       
   262     CSensrvChannelFinder* tempChannelFinder17;
       
   263     CSensrvChannelFinder* tempChannelFinder18;
       
   264     CSensrvChannelFinder* tempChannelFinder19;
       
   265     CSensrvChannelFinder* tempChannelFinder20;
       
   266     
       
   267     tempChannelFinder1 = CSensrvChannelFinder::NewL();
       
   268     tempChannelFinder2 = CSensrvChannelFinder::NewL();
       
   269     tempChannelFinder3 = CSensrvChannelFinder::NewL();
       
   270     tempChannelFinder4 = CSensrvChannelFinder::NewL();
       
   271     tempChannelFinder5 = CSensrvChannelFinder::NewL();
       
   272     tempChannelFinder6 = CSensrvChannelFinder::NewL();
       
   273     tempChannelFinder7 = CSensrvChannelFinder::NewL();
       
   274     tempChannelFinder8 = CSensrvChannelFinder::NewL();
       
   275     tempChannelFinder9 = CSensrvChannelFinder::NewL();
       
   276     tempChannelFinder10 = CSensrvChannelFinder::NewL();
       
   277     tempChannelFinder11 = CSensrvChannelFinder::NewL();
       
   278     tempChannelFinder12 = CSensrvChannelFinder::NewL();
       
   279     tempChannelFinder13 = CSensrvChannelFinder::NewL();
       
   280     tempChannelFinder14 = CSensrvChannelFinder::NewL();
       
   281     tempChannelFinder15 = CSensrvChannelFinder::NewL();
       
   282     tempChannelFinder16 = CSensrvChannelFinder::NewL();
       
   283     tempChannelFinder17 = CSensrvChannelFinder::NewL();
       
   284     tempChannelFinder18 = CSensrvChannelFinder::NewL();
       
   285     tempChannelFinder19 = CSensrvChannelFinder::NewL();
       
   286     tempChannelFinder20 = CSensrvChannelFinder::NewL();
       
   287     
       
   288     //List of found channels.
       
   289     RSensrvChannelInfoList tempChannelInfoList;
       
   290     TSensrvChannelInfo tempChannelInfo;
       
   291 
       
   292     tempChannelInfo.iChannelType = KSensrvChannelTypeIdAccelerometerXYZAxisData;
       
   293 
       
   294     //Find the channel
       
   295     tempChannelFinder1->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   296     tempChannelFinder2->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   297     tempChannelFinder3->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   298     tempChannelFinder4->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   299     tempChannelFinder5->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   300     tempChannelFinder6->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   301     tempChannelFinder7->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   302     tempChannelFinder8->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   303     tempChannelFinder9->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   304     tempChannelFinder10->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   305     tempChannelFinder11->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   306     tempChannelFinder12->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   307     tempChannelFinder13->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   308     tempChannelFinder14->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   309     tempChannelFinder15->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   310     tempChannelFinder16->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   311     tempChannelFinder17->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   312     tempChannelFinder18->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   313     tempChannelFinder19->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   314     tempChannelFinder20->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   315     
       
   316     delete tempChannelFinder1;
       
   317     delete tempChannelFinder2;
       
   318     delete tempChannelFinder3;
       
   319     delete tempChannelFinder4;
       
   320     delete tempChannelFinder5;
       
   321     delete tempChannelFinder6;
       
   322     delete tempChannelFinder7;
       
   323     delete tempChannelFinder8;
       
   324     delete tempChannelFinder9;
       
   325     delete tempChannelFinder10;
       
   326     delete tempChannelFinder11;
       
   327     delete tempChannelFinder12;
       
   328     delete tempChannelFinder13;
       
   329     delete tempChannelFinder14;
       
   330     delete tempChannelFinder15;
       
   331     delete tempChannelFinder16;
       
   332     delete tempChannelFinder17;
       
   333     delete tempChannelFinder18;
       
   334     delete tempChannelFinder19;
       
   335     delete tempChannelFinder20;
       
   336 
       
   337     return KErrNone;
       
   338     }
       
   339 TInt CSensrvTest::TestOpenClose( CStifItemParser& /*aItem*/ )
       
   340     {
       
   341     RDebug::Print( _L("CSensrvTest::TestOpenCloseL") );
       
   342     
       
   343     TInt err = CheckTest();
       
   344     if( err )
       
   345         {
       
   346         RDebug::Print( _L("CSensrvTest::TestOpenCloseL Test Creattion error: %d"), err );
       
   347         return err;
       
   348         }
       
   349     
       
   350     CSensrvChannelFinder* tempChannelFinder;
       
   351     CSensrvChannel* tempSensorChannel;
       
   352         
       
   353     TRAP(err, tempChannelFinder = CSensrvChannelFinder::NewL());
       
   354     if( err )
       
   355         {
       
   356         RDebug::Print( _L("tempChannelFinder = CSensrvChannelFinder::NewL() error: %d"), err );
       
   357         return err;
       
   358         }
       
   359             
       
   360     //List of found channels.
       
   361     RSensrvChannelInfoList tempChannelInfoList;
       
   362     TSensrvChannelInfo tempChannelInfo;
       
   363 
       
   364     tempChannelInfo.iChannelType = KSensrvChannelTypeIdAccelerometerXYZAxisData;
       
   365 
       
   366     //Find the channel
       
   367     TRAP(err, tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo ));
       
   368     if( err )
       
   369         {
       
   370         RDebug::Print( _L("tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo ) error: %d"), err );
       
   371         return err;
       
   372         }        
       
   373     TRAP(err, tempSensorChannel = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] ));
       
   374     if( err )
       
   375         {
       
   376         RDebug::Print( _L("tempSensorChannel = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] ) error: %d"), err );
       
   377         return err;
       
   378         }
       
   379         
       
   380     for (TInt i =0; i <100; i++)
       
   381         {
       
   382         //Open the channel
       
   383         TRAP(err, tempSensorChannel->OpenChannelL());
       
   384         if( err )
       
   385             {
       
   386             RDebug::Print( _L("tempSensorChannel->OpenChannelL() error: %d"), err );
       
   387             return err;
       
   388             }
       
   389                 
       
   390         User::After(1000000);
       
   391                 
       
   392         //Close the channel
       
   393         TRAP(err, tempSensorChannel->CloseChannel());
       
   394         if( err )
       
   395             {
       
   396             RDebug::Print( _L("tempSensorChannel->CloseChannel() error: %d"), err );
       
   397             return err;
       
   398             }
       
   399         }
       
   400         
       
   401     delete tempChannelFinder;
       
   402     delete tempSensorChannel;
       
   403     
       
   404     RDebug::Print( _L("CSensrvTest::TestOpenCloseL") );
       
   405     
       
   406     return err;
       
   407     }
       
   408 
       
   409 TInt CSensrvTest::TestOpenCloseSensorL( CStifItemParser& /*aItem*/ )
       
   410     {
       
   411     CSensrvChannelFinder* tempChannelFinder;
       
   412     CSensrvChannel* tempSensorChannel1;
       
   413     CSensrvChannel* tempSensorChannel2;
       
   414     CSensrvChannel* tempSensorChannel3;
       
   415         
       
   416     _LIT(KAccelerometerSSY, "Ssy@1");
       
   417     _LIT(KMagnetometerSSY, "Ssy@2");
       
   418     _LIT(KProximitySSY, "Ssy@3");
       
   419         
       
   420     TRequestStatus status;
       
   421     RProcess ssyProcess;
       
   422     TFullName ssyName;
       
   423     TFindProcess findProcess;
       
   424     TInt returnValue;
       
   425     
       
   426     TInt err = CheckTest();
       
   427     if( err )
       
   428         {
       
   429         RDebug::Print( _L("CSensrvTest::TestOpenCloseL Test Creattion error: %d"), err );
       
   430         return err;
       
   431         }
       
   432         
       
   433     tempChannelFinder = CSensrvChannelFinder::NewL();    
       
   434             
       
   435     //List of found channels.
       
   436     RSensrvChannelInfoList tempChannelInfoList;
       
   437     TSensrvChannelInfo tempChannelInfo;
       
   438 
       
   439     tempChannelInfo.iChannelType = KSensrvChannelTypeIdAccelerometerXYZAxisData;
       
   440 
       
   441     //Find the channel
       
   442     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   443 
       
   444     //Checking for accelerometer
       
   445     tempSensorChannel1 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   446         {
       
   447         //Open the channel
       
   448         tempSensorChannel1->OpenChannelL();
       
   449         
       
   450         User::After(1000000);
       
   451         
       
   452         //Close the channel
       
   453         tempSensorChannel1->CloseChannel();
       
   454             
       
   455         // SSY takes about a min to unload itself when there are no sessions
       
   456         User::After(70000000);
       
   457             
       
   458         //Checking whether the SSY is unloaded or not
       
   459         findProcess.Find(KAccelerometerSSY);
       
   460 
       
   461         if ( findProcess.Next(ssyName) == KErrNone )
       
   462             {
       
   463             returnValue = ssyProcess.Open(ssyName);
       
   464             ssyProcess.Logon(status);
       
   465             User::WaitForRequest(status); 
       
   466             ssyProcess.Close();
       
   467             }
       
   468             
       
   469         }        
       
   470         
       
   471         //Checking for Magnetometer
       
   472     tempChannelInfo.iChannelType = KSensrvChannelTypeIdMagnetometerXYZAxisData;
       
   473 
       
   474     //Find the channel
       
   475     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   476         
       
   477     tempSensorChannel2 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   478         {
       
   479         //Open the channel
       
   480         tempSensorChannel2->OpenChannelL();
       
   481                 
       
   482         User::After(1000000);
       
   483             
       
   484         //Close the channel
       
   485         tempSensorChannel2->CloseChannel();
       
   486                     
       
   487         // SSY takes about a min to unload itself when there are no sessions
       
   488         User::After(70000000);
       
   489                     
       
   490         //Checking whether the SSY is unloaded or not
       
   491         findProcess.Find(KMagnetometerSSY);
       
   492 
       
   493         if ( findProcess.Next(ssyName) == KErrNone )
       
   494             {
       
   495             returnValue = ssyProcess.Open(ssyName);
       
   496             ssyProcess.Logon(status);
       
   497             User::WaitForRequest(status); 
       
   498             ssyProcess.Close();
       
   499             }
       
   500                     
       
   501         } 
       
   502             
       
   503     tempChannelInfo.iChannelType = KSensrvChannelTypeIdAmbientLightData;
       
   504 
       
   505     //Find the channel
       
   506     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   507                 
       
   508     tempSensorChannel3 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   509         {
       
   510         //Open the channel
       
   511         tempSensorChannel3->OpenChannelL();
       
   512             
       
   513         User::After(1000000);
       
   514                     
       
   515         //Close the channel
       
   516         tempSensorChannel3->CloseChannel();
       
   517             
       
   518         // SSY takes about a min to unload itself when there are no sessions
       
   519         User::After(70000000);
       
   520                             
       
   521         //Checking whether the SSY is unloaded or not
       
   522         findProcess.Find(KProximitySSY);
       
   523 
       
   524         if ( findProcess.Next(ssyName) == KErrNone )
       
   525             {
       
   526             returnValue = ssyProcess.Open(ssyName);
       
   527             ssyProcess.Logon(status);
       
   528             User::WaitForRequest(status); 
       
   529             ssyProcess.Close();
       
   530             }
       
   531                             
       
   532         }
       
   533             
       
   534     delete tempChannelFinder;
       
   535     delete tempSensorChannel1;
       
   536     delete tempSensorChannel2;
       
   537     delete tempSensorChannel3;
       
   538     
       
   539     return err;
       
   540     }
       
   541 
       
   542 TInt CSensrvTest::TestOpenCloseSensorsL( CStifItemParser& aItem )
       
   543     {
       
   544     CSensrvChannelFinder* tempChannelFinder;
       
   545     CSensrvChannel* tempSensorChannel1;
       
   546     CSensrvChannel* tempSensorChannel2;
       
   547     CSensrvChannel* tempSensorChannel3;
       
   548         
       
   549     _LIT(KAccelerometerSSY, "Ssy@1");
       
   550     _LIT(KMagnetometerSSY, "Ssy@2");
       
   551     _LIT(KProximitySSY, "Ssy@3");
       
   552         
       
   553     TRequestStatus status;
       
   554     RProcess ssyProcess;
       
   555     TFullName name;
       
   556     TFindProcess findProcess;
       
   557     TInt returnValue;
       
   558         
       
   559     returnValue = ShutdownServer(aItem);
       
   560          
       
   561     User::After(3000000);
       
   562     
       
   563     returnValue = CheckServerAlive(aItem);
       
   564         
       
   565     tempChannelFinder = CSensrvChannelFinder::NewL();    
       
   566             
       
   567     //List of found channels.
       
   568     RSensrvChannelInfoList tempChannelInfoList;
       
   569     TSensrvChannelInfo tempChannelInfo;
       
   570 
       
   571     tempChannelInfo.iChannelType = KSensrvChannelTypeIdAccelerometerXYZAxisData;
       
   572 
       
   573     //Find the channel
       
   574     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   575 
       
   576     //Checking for accelerometer
       
   577     tempSensorChannel1 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   578         {
       
   579         //Open the channel
       
   580         tempSensorChannel1->OpenChannelL();
       
   581                 
       
   582         User::After(1000000);
       
   583             
       
   584         //Close the channel
       
   585         tempSensorChannel1->CloseChannel();
       
   586             
       
   587         // SSY takes about a min to unload itself when there are no sessions
       
   588         User::After(70000000);
       
   589             
       
   590         //Checking whether the SSY is unloaded or not
       
   591         findProcess.Find(KAccelerometerSSY);
       
   592 
       
   593         if ( findProcess.Next(name) == KErrNone )
       
   594             {
       
   595             returnValue = ssyProcess.Open(name);
       
   596             ssyProcess.Logon(status);
       
   597             User::WaitForRequest(status); 
       
   598             ssyProcess.Close();
       
   599             }
       
   600             
       
   601         }        
       
   602         
       
   603     //Checking for Magnetometer
       
   604     tempChannelInfo.iChannelType = KSensrvChannelTypeIdMagnetometerXYZAxisData;
       
   605 
       
   606     //Find the channel
       
   607     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   608         
       
   609     tempSensorChannel2 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   610         {
       
   611         //Open the channel
       
   612         tempSensorChannel2->OpenChannelL();
       
   613         
       
   614         User::After(1000000);
       
   615             
       
   616         //Close the channel
       
   617         tempSensorChannel2->CloseChannel();
       
   618                     
       
   619         // SSY takes about a min to unload itself when there are no sessions
       
   620         User::After(70000000);
       
   621                     
       
   622         //Checking whether the SSY is unloaded or not
       
   623         findProcess.Find(KMagnetometerSSY);
       
   624 
       
   625         if ( findProcess.Next(name) == KErrNone )
       
   626             {
       
   627             returnValue = ssyProcess.Open(name);
       
   628             ssyProcess.Logon(status);
       
   629             User::WaitForRequest(status); 
       
   630             ssyProcess.Close();
       
   631             }
       
   632                     
       
   633         } 
       
   634             
       
   635     tempChannelInfo.iChannelType = KSensrvChannelTypeIdAmbientLightData;
       
   636 
       
   637     //Find the channel
       
   638     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   639                 
       
   640     tempSensorChannel3 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   641         {
       
   642         //Open the channel
       
   643         tempSensorChannel3->OpenChannelL();
       
   644             
       
   645         User::After(1000000);
       
   646         
       
   647         //Close the channel
       
   648         tempSensorChannel3->CloseChannel();
       
   649             
       
   650         // SSY takes about a min to unload itself when there are no sessions
       
   651         User::After(70000000);
       
   652                             
       
   653         //Checking whether the SSY is unloaded or not
       
   654         findProcess.Find(KProximitySSY);
       
   655 
       
   656         if ( findProcess.Next(name) == KErrNone )
       
   657             {
       
   658             returnValue = ssyProcess.Open(name);
       
   659             ssyProcess.Logon(status);
       
   660             User::WaitForRequest(status); 
       
   661             ssyProcess.Close();
       
   662             }
       
   663                             
       
   664         }
       
   665             
       
   666     delete tempChannelFinder;
       
   667         
       
   668     User::After(3000000);
       
   669     
       
   670     returnValue = CheckServerAlive(aItem);    
       
   671     
       
   672     if (returnValue == KErrNotFound)
       
   673         {
       
   674         returnValue = KErrNone;
       
   675         }
       
   676     delete tempSensorChannel1;
       
   677     delete tempSensorChannel2;
       
   678     delete tempSensorChannel3;
       
   679     
       
   680     return returnValue;
       
   681     }
       
   682 
       
   683 TInt CSensrvTest::TestOpenCloseCombinationSensorsL( CStifItemParser& aItem )
       
   684     {
       
   685     CSensrvChannelFinder* tempChannelFinder;
       
   686     CSensrvChannel* tempSensorChannel1;
       
   687     CSensrvChannel* tempSensorChannel2;
       
   688     CSensrvChannel* tempSensorChannel3;
       
   689     CSensrvChannel* tempSensorChannel4;
       
   690     CSensrvChannel* tempSensorChannel5;
       
   691     CSensrvChannel* tempSensorChannel6;
       
   692     
       
   693     _LIT(KAccelerometerSSY, "Ssy@1");
       
   694     _LIT(KMagnetometerSSY, "Ssy@2");
       
   695     _LIT(KProximitySSY, "Ssy@3");
       
   696     
       
   697     TRequestStatus status;
       
   698     RProcess ssyProcess;
       
   699     TFullName name;
       
   700     TFindProcess findProcess;
       
   701     TInt returnValue;
       
   702             
       
   703     //check for sensorserver existance.. if it exits, kill it
       
   704     returnValue = ShutdownServer(aItem);
       
   705     
       
   706     User::After(3000000);
       
   707         
       
   708     returnValue = CheckServerAlive(aItem);
       
   709     
       
   710     tempChannelFinder = CSensrvChannelFinder::NewL();    
       
   711         
       
   712     //List of found channels.
       
   713     RSensrvChannelInfoList tempChannelInfoList;
       
   714     TSensrvChannelInfo tempChannelInfo;
       
   715 
       
   716     tempChannelInfo.iChannelType = KSensrvChannelTypeIdAccelerometerXYZAxisData;
       
   717 
       
   718     //Find the channel
       
   719     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   720 
       
   721     //Checking for accelerometer
       
   722     tempSensorChannel1 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   723         {
       
   724         //Open the channel
       
   725         tempSensorChannel1->OpenChannelL();
       
   726             
       
   727         User::After(1000000);
       
   728         
       
   729         //Close the channel
       
   730         tempSensorChannel1->CloseChannel();
       
   731         
       
   732         }        
       
   733 
       
   734     tempChannelInfo.iChannelType = KSensrvChannelTypeIdOrientationData;
       
   735 
       
   736     //Find the channel
       
   737     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   738     
       
   739     //Checking for accelerometer
       
   740     tempSensorChannel2 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   741         {
       
   742         //Open the channel
       
   743         tempSensorChannel2->OpenChannelL();
       
   744         
       
   745         User::After(1000000);
       
   746             
       
   747         //Close the channel
       
   748         tempSensorChannel2->CloseChannel();
       
   749             
       
   750         // SSY takes about a min to unload itself when there are no sessions
       
   751         User::After(70000000);
       
   752         
       
   753         //Checking whether the SSY is unloaded or not
       
   754         findProcess.Find(KAccelerometerSSY);
       
   755         
       
   756         if ( findProcess.Next(name) == KErrNone )
       
   757             {
       
   758             returnValue = ssyProcess.Open(name);
       
   759             ssyProcess.Logon(status);
       
   760             User::WaitForRequest(status); 
       
   761             ssyProcess.Close();
       
   762             }
       
   763             
       
   764         }
       
   765     delete tempChannelFinder;
       
   766     //Wait for sensorserver to shutdown gracefully, it will take some time..
       
   767     User::After(30000000);    
       
   768     
       
   769     tempChannelFinder = CSensrvChannelFinder::NewL();  
       
   770     
       
   771     //Checking for Magnetometer
       
   772     tempChannelInfo.iChannelType = KSensrvChannelTypeIdMagnetometerXYZAxisData;
       
   773 
       
   774     //Find the channel
       
   775     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   776     
       
   777     tempSensorChannel3 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   778         {
       
   779         //Open the channel
       
   780         tempSensorChannel3->OpenChannelL();
       
   781             
       
   782         User::After(1000000);
       
   783         
       
   784         //Close the channel
       
   785         tempSensorChannel3->CloseChannel();
       
   786                 
       
   787         // SSY takes about a min to unload itself when there are no sessions
       
   788         User::After(70000000);
       
   789                 
       
   790         //Checking whether the SSY is unloaded or not
       
   791         findProcess.Find(KMagnetometerSSY);
       
   792 
       
   793         if ( findProcess.Next(name) == KErrNone )
       
   794             {
       
   795             returnValue = ssyProcess.Open(name);
       
   796             ssyProcess.Logon(status);
       
   797             User::WaitForRequest(status); 
       
   798             ssyProcess.Close();
       
   799             }
       
   800                 
       
   801         } 
       
   802  
       
   803     //Checking for Magnetometer
       
   804     tempChannelInfo.iChannelType = KSensrvChannelTypeIdMagneticNorthData;
       
   805 
       
   806     //Find the channel
       
   807     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   808         
       
   809     tempSensorChannel4 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   810         {
       
   811         //Open the channel
       
   812         tempSensorChannel4->OpenChannelL();
       
   813         
       
   814         User::After(1000000);
       
   815         
       
   816         //Close the channel
       
   817         tempSensorChannel4->CloseChannel();
       
   818         
       
   819         // SSY takes about a min to unload itself when there are no sessions
       
   820         User::After(70000000);
       
   821                     
       
   822         //Checking whether the SSY is unloaded or not
       
   823         findProcess.Find(KMagnetometerSSY);
       
   824 
       
   825         if ( findProcess.Next(name) == KErrNone )
       
   826             {
       
   827             returnValue = ssyProcess.Open(name);
       
   828             ssyProcess.Logon(status);
       
   829             User::WaitForRequest(status); 
       
   830             ssyProcess.Close();
       
   831             }
       
   832         } 
       
   833 
       
   834     delete tempChannelFinder;
       
   835     
       
   836     //Wait for the sensorserver to shutdown
       
   837     
       
   838     User::After(3000000);
       
   839     
       
   840     tempChannelFinder = CSensrvChannelFinder::NewL();  
       
   841     //Checking for Magnetometer
       
   842     tempChannelInfo.iChannelType = KSensrvChannelTypeIdMagneticNorthData;
       
   843 
       
   844     //Find the channel
       
   845     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   846             
       
   847     tempSensorChannel5 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   848         {
       
   849         //Open the channel
       
   850         tempSensorChannel5->OpenChannelL();
       
   851             
       
   852         User::After(1000000);
       
   853             
       
   854         //Close the channel
       
   855         tempSensorChannel5->CloseChannel();
       
   856             
       
   857         // SSY takes about a min to unload itself when there are no sessions
       
   858         User::After(70000000);
       
   859                         
       
   860         //Checking whether the SSY is unloaded or not
       
   861         findProcess.Find(KMagnetometerSSY);
       
   862 
       
   863         if ( findProcess.Next(name) == KErrNone )
       
   864             {
       
   865             returnValue = ssyProcess.Open(name);
       
   866             ssyProcess.Logon(status);
       
   867             User::WaitForRequest(status); 
       
   868             ssyProcess.Close();
       
   869             }
       
   870         }         
       
   871         
       
   872     tempChannelInfo.iChannelType = KSensrvChannelTypeIdAmbientLightData;
       
   873 
       
   874     //Find the channel
       
   875     tempChannelFinder->FindChannelsL( tempChannelInfoList, tempChannelInfo );
       
   876             
       
   877     tempSensorChannel6 = CSensrvChannel::NewL( tempChannelInfoList[ 0 ] );
       
   878         {
       
   879         //Open the channel
       
   880         tempSensorChannel6->OpenChannelL();
       
   881         
       
   882         User::After(1000000);
       
   883                 
       
   884         //Close the channel
       
   885         tempSensorChannel6->CloseChannel();
       
   886         
       
   887         // SSY takes about a min to unload itself when there are no sessions
       
   888         User::After(70000000);
       
   889                         
       
   890         //Checking whether the SSY is unloaded or not
       
   891         findProcess.Find(KProximitySSY);
       
   892 
       
   893         if ( findProcess.Next(name) == KErrNone )
       
   894             {
       
   895             returnValue = ssyProcess.Open(name);
       
   896             ssyProcess.Logon(status);
       
   897             User::WaitForRequest(status); 
       
   898             ssyProcess.Close();
       
   899             }
       
   900                         
       
   901         }
       
   902         
       
   903     delete tempChannelFinder;
       
   904     
       
   905     User::After(3000000);
       
   906         
       
   907     returnValue = CheckServerAlive(aItem); 
       
   908     
       
   909     if (returnValue == KErrNotFound)
       
   910         {
       
   911         returnValue = KErrNone;
       
   912         }
       
   913     
       
   914     delete tempSensorChannel1;
       
   915     delete tempSensorChannel2;
       
   916     delete tempSensorChannel3;
       
   917     delete tempSensorChannel4;
       
   918     delete tempSensorChannel5;
       
   919     delete tempSensorChannel6;
       
   920     
       
   921     return returnValue;
       
   922     }
       
   923 // -----------------------------------------------------------------------------
       
   924 // CSensrvTest::SetPSValue
       
   925 // Parameters: SRKey form SensrvInternalPSKeys.h(TUint32), value(TInt)
       
   926 //
       
   927 // -----------------------------------------------------------------------------
       
   928 //
       
   929 TInt CSensrvTest::SetPSValue( CStifItemParser& aItem )
       
   930     {
       
   931     RDebug::Print( _L("CSensrvTest::SetPSValue") );
       
   932 
       
   933     TUint srKey;
       
   934     TInt value;
       
   935 
       
   936     TInt err = aItem.GetNextInt( srKey );
       
   937     if( err )
       
   938         {
       
   939         RDebug::Print( _L("CSensrvTest::SetPSValue: srKey error: %d"), err );
       
   940         return err;
       
   941         }
       
   942 
       
   943     err = aItem.GetNextInt( value );
       
   944     if( err )
       
   945         {
       
   946         RDebug::Print(  _L("CSensrvTest::SetPSValue: value error: %d"), err );
       
   947         return err;
       
   948         }
       
   949 
       
   950     RDebug::Print( _L("CSensrvTest::SetPSValue - RProperty::Set( %d, %d )"), srKey, value );
       
   951 
       
   952     return RProperty::Set( KPSUidSensrvTest, srKey, value );
       
   953 
       
   954     }
       
   955 
       
   956 // -----------------------------------------------------------------------------
       
   957 // CSensrvTest::SetPSValue to test process
       
   958 // Parameters:
       
   959 //             TUInt   - process ID
       
   960 //             TUInt   - command
       
   961 //             TInt    - expected result
       
   962 //             TInt    - PropertyId
       
   963 //             TInt    - Property index
       
   964 //             TInt    - Property value
       
   965 //
       
   966 // -----------------------------------------------------------------------------
       
   967 //
       
   968 TInt CSensrvTest::SetProcessPSValue( CStifItemParser& aItem )
       
   969     {
       
   970     RDebug::Print( _L("CSensrvTest::SetProcessPSValue") );
       
   971 
       
   972     TInt  valueTInt;
       
   973     TUint valueTUInt;
       
   974     TPckgBuf< TSensrvProcessData > buf;
       
   975 /*
       
   976     TInt err = aItem.GetNextInt( srKey );
       
   977     if( err )
       
   978         {
       
   979         RDebug::Print( _L("CSensrvTest::SetProcessPSValue: srKey error: %d"), err );
       
   980         return err;
       
   981         }
       
   982 */
       
   983     TInt err = aItem.GetNextInt( valueTUInt );
       
   984     if( err )
       
   985         {
       
   986         RDebug::Print(  _L("CSensrvTest::SetProcessPSValue: value error1: %d"), err );
       
   987         return err;
       
   988         }
       
   989     buf().iProcessID = valueTUInt;
       
   990 
       
   991     err = aItem.GetNextInt( valueTUInt );
       
   992     if( err )
       
   993         {
       
   994         RDebug::Print(  _L("CSensrvTest::SetProcessPSValue: value error2: %d"), err );
       
   995         return err;
       
   996         }
       
   997     buf().iCommand = valueTUInt;
       
   998 
       
   999     err = aItem.GetNextInt( valueTInt );
       
  1000     if( err )
       
  1001         {
       
  1002         RDebug::Print(  _L("CSensrvTest::SetProcessPSValue: value error3: %d"), err );
       
  1003         return err;
       
  1004         }
       
  1005     buf().iExpectedResult = valueTInt;
       
  1006 
       
  1007 
       
  1008     //Property
       
  1009     TInt propertyId(0);
       
  1010     TInt propertyIndex(0);
       
  1011     TInt propertyValue(0);
       
  1012 
       
  1013     err = aItem.GetNextInt( propertyId );
       
  1014     err = aItem.GetNextInt( propertyIndex );
       
  1015 
       
  1016     if( !err )
       
  1017         {
       
  1018         if( propertyId == KSensrvPropIdDataRate )
       
  1019             {
       
  1020             aItem.GetNextInt( propertyValue );
       
  1021             buf().iProperty.SetPropertyId( KSensrvPropIdDataRate );
       
  1022             buf().iProperty.SetValue( propertyValue );
       
  1023             buf().iProperty.SetItemIndex( propertyIndex );
       
  1024             }
       
  1025         else if( propertyId == KSensrvPropIdAvailability )
       
  1026             {
       
  1027             aItem.GetNextInt( propertyValue );
       
  1028             buf().iProperty.SetPropertyId( KSensrvPropIdAvailability  );
       
  1029             buf().iProperty.SetValue( propertyValue );
       
  1030             buf().iProperty.SetItemIndex( propertyIndex );
       
  1031             }
       
  1032         else
       
  1033             {
       
  1034             RDebug::Print(  _L("CSensrvTest::SetProcessPSValue: property set to zero") );
       
  1035             buf().iProperty.SetPropertyId( 0 );
       
  1036             buf().iProperty.SetValue( 0 );
       
  1037             buf().iProperty.SetItemIndex( 0 );
       
  1038             }
       
  1039         }
       
  1040 
       
  1041 
       
  1042     return RProperty::Set( KPSUidSensrvTest, KSensrvTestProcessCommand, buf );
       
  1043     }
       
  1044 
       
  1045 // -----------------------------------------------------------------------------
       
  1046 // CSensrvTest::SetCompletedKey
       
  1047 // Parameters: SRKey form SensrvInternalPSKeys.h(TUint32)
       
  1048 //
       
  1049 // -----------------------------------------------------------------------------
       
  1050 //
       
  1051 TInt CSensrvTest::SetCompletedKeyL( CStifItemParser& aItem )
       
  1052     {
       
  1053     RDebug::Print( _L("CSensrvTest::SetCompletedKey") );
       
  1054     TInt err = aItem.GetNextInt( iCompletedKey );
       
  1055     if( err )
       
  1056         {
       
  1057         RDebug::Print( _L("CSensrvTest::SetCompletedKey:  error: %d"), err );
       
  1058         }
       
  1059 
       
  1060     DefinePSKeyL( iCompletedKey, RProperty::EInt );
       
  1061     RProperty::Set( KPSUidSensrvTest, iCompletedKey, KErrCompletion );
       
  1062 
       
  1063     return err;
       
  1064     }
       
  1065 
       
  1066 // -----------------------------------------------------------------------------
       
  1067 // CSensrvTest::SetGetDataDelay
       
  1068 // Parameters: Delay in millisecond
       
  1069 //
       
  1070 // -----------------------------------------------------------------------------
       
  1071 //
       
  1072 TInt CSensrvTest::SetGetDataDelay( CStifItemParser& aItem )
       
  1073     {
       
  1074     RDebug::Print( _L("CSensrvTest::SetGetDataDelay") );
       
  1075     TInt delay;
       
  1076     TInt err = aItem.GetNextInt( delay );
       
  1077     if( err )
       
  1078         {
       
  1079         RDebug::Print( _L("CSensrvTest::SetGetDataDelay:  error: %d"), err );
       
  1080         return err;
       
  1081         }
       
  1082 
       
  1083     err = CheckTest();
       
  1084 
       
  1085     if( err == KErrNone )
       
  1086         {
       
  1087         RDebug::Print( _L("CSensrvTest::SetGetDataDelay: delay: %d"), delay );
       
  1088         iTestCases->SetGetDataDelay( delay );
       
  1089         }
       
  1090 
       
  1091     return err;
       
  1092     }
       
  1093 
       
  1094 // -----------------------------------------------------------------------------
       
  1095 // CSensrvTest::WaitCompletedKey
       
  1096 // Parameters:
       
  1097 //
       
  1098 // -----------------------------------------------------------------------------
       
  1099 //
       
  1100 TInt CSensrvTest::WaitCompletedKey( CStifItemParser& /*aItem*/ )
       
  1101     {
       
  1102     RDebug::Print( _L("CSensrvTest::WaitCompletedKey") );
       
  1103     TInt err( KErrNone );
       
  1104     TInt ret( KErrNone );
       
  1105     if( iTestCases == NULL )
       
  1106         {
       
  1107         RDebug::Print( _L("CSensrvTest::WaitCompletedKey: ERROR - iTestCases = NULL") );
       
  1108         ret = KErrGeneral;
       
  1109         }
       
  1110     else
       
  1111         {
       
  1112         iTestCases->Mutex().Wait();
       
  1113         err = RProperty::Get( KPSUidSensrvTest, iCompletedKey, ret );
       
  1114 
       
  1115         if( err == KErrNone )
       
  1116             {
       
  1117             if( ret == KErrCompletion )
       
  1118                 {
       
  1119                 RProperty complete;
       
  1120                 err = complete.Attach( KPSUidSensrvTest, iCompletedKey );
       
  1121                 if( err == KErrNone )
       
  1122                     {
       
  1123                     // wait for test case complete
       
  1124                     TRequestStatus status;
       
  1125                     complete.Subscribe( status );
       
  1126                     iTestCases->Mutex().Signal();
       
  1127                     RDebug::Print( _L("CSensrvTest::WaitCompletedKey - Waiting...") );
       
  1128                     User::WaitForRequest( status );
       
  1129                     RDebug::Print( _L("CSensrvTest::WaitCompletedKey - Waiting completed") );
       
  1130                     complete.Get( ret );
       
  1131                     }
       
  1132                 else
       
  1133                     {
       
  1134                     RDebug::Print( _L("CSensrvTest::WaitCompletedKey:  Attach error: %d"), err );
       
  1135                     ret = err;
       
  1136                     iTestCases->Mutex().Signal();
       
  1137                     }
       
  1138                 }
       
  1139             else
       
  1140                 {
       
  1141                 RDebug::Print( _L("CSensrvTest::WaitCompletedKey:  Test completed: %d"), ret );
       
  1142                 iTestCases->Mutex().Signal();
       
  1143                 }
       
  1144             }
       
  1145         else
       
  1146             {
       
  1147             RDebug::Print( _L("CSensrvTest::WaitCompletedKey:  Get error: %d"), err );
       
  1148             ret = err;
       
  1149             iTestCases->Mutex().Signal();
       
  1150             }
       
  1151         }
       
  1152 
       
  1153     // Clear completion value
       
  1154     RProperty::Set( KPSUidSensrvTest, iCompletedKey, KErrCompletion );
       
  1155     RDebug::Print( _L("CSensrvTest::WaitCompletedKey - return %d"), ret );
       
  1156     return ret;
       
  1157     }
       
  1158 
       
  1159 // -----------------------------------------------------------------------------
       
  1160 // CSensrvTest::ShutdownServer
       
  1161 // Parameters:
       
  1162 //
       
  1163 // -----------------------------------------------------------------------------
       
  1164 //
       
  1165 TInt CSensrvTest::ShutdownServer( CStifItemParser& /*aItem*/ )
       
  1166     {
       
  1167     RDebug::Print( _L("CSensrvTest::ShutdownServer") );
       
  1168 
       
  1169     RSensrvTestClient testClient;
       
  1170     TInt err( testClient.Connect() );
       
  1171     if( err == KErrNone )
       
  1172         {
       
  1173         err = testClient.ShutdownServer();
       
  1174         testClient.Close();
       
  1175         }
       
  1176     else
       
  1177         {
       
  1178         err = KErrNone;
       
  1179         }
       
  1180 
       
  1181 
       
  1182     RDebug::Print( _L("CSensrvTest::ShutdownServer - return %d " ), err );
       
  1183     return KErrNone;
       
  1184     }
       
  1185 
       
  1186 // -----------------------------------------------------------------------------
       
  1187 // CSensrvTest::StartServer
       
  1188 // Parameters:
       
  1189 //
       
  1190 // -----------------------------------------------------------------------------
       
  1191 //
       
  1192 TInt CSensrvTest::StartServer( CStifItemParser& /*aItem*/ )
       
  1193     {
       
  1194     RDebug::Print( _L("CSensrvTest::StartServer") );
       
  1195     TInt err( KErrNone );
       
  1196     RSensrvTestClient testClient;
       
  1197     if( testClient.Connect() )
       
  1198         {
       
  1199         RDebug::Print( _L("CSensrvTest::StartServer - Start server...") );
       
  1200         err = testClient.StartServer();
       
  1201         if( err )
       
  1202             {
       
  1203             RDebug::Print( _L("CSensrvTest::StartServer - Start server error: %d"), err );
       
  1204             }
       
  1205         else
       
  1206             {
       
  1207             RDebug::Print( _L("CSensrvTest::StartServer - Server started") );
       
  1208             }
       
  1209         }
       
  1210     else
       
  1211         {
       
  1212         RDebug::Print( _L("CSensrvTest::StartServer - Server already started") );
       
  1213         }
       
  1214     return err;
       
  1215     }
       
  1216 
       
  1217 // -----------------------------------------------------------------------------
       
  1218 // CSensrvTest::CheckTest
       
  1219 // Parameters:
       
  1220 //
       
  1221 // -----------------------------------------------------------------------------
       
  1222 //
       
  1223 TInt CSensrvTest::CheckTest()
       
  1224     {
       
  1225     TInt ret( KErrNone );
       
  1226     if( !iTestCases )
       
  1227         {
       
  1228         // Wait second
       
  1229         User::After( 1000000 );
       
  1230         if( !iTestCases )
       
  1231             {
       
  1232             ret = KErrNotReady;
       
  1233             }
       
  1234         }
       
  1235     return ret;
       
  1236     }
       
  1237 
       
  1238 
       
  1239 // -----------------------------------------------------------------------------
       
  1240 // CSensrvTest::DoRunAndWaitTest
       
  1241 // Parameters:
       
  1242 //
       
  1243 // -----------------------------------------------------------------------------
       
  1244 //
       
  1245 TInt CSensrvTest::DoRunAndWaitTest( CSensrvTestCases::TSensrvTestCase aTestCase,
       
  1246                                         CStifItemParser& aItem )
       
  1247     {
       
  1248     RDebug::Print( _L("CSensrvTest::DoRunAndWaitTest") );
       
  1249     RProperty complete;
       
  1250     TInt waitCompletion;
       
  1251     TInt err( KErrNone );
       
  1252     TRequestStatus status;
       
  1253     RProperty::Get( KPSUidSensrvTest, KSensrvWaitTestCompletion, waitCompletion );
       
  1254     if( waitCompletion )
       
  1255         {
       
  1256         err = complete.Attach( KPSUidSensrvTest, iCompletedKey );
       
  1257         if( err )
       
  1258             {
       
  1259             RDebug::Print( _L("CSensrvTest::DoRunAndWaitTest - Error RProperty::Attach: %d "), err );
       
  1260             return err;
       
  1261             }
       
  1262 
       
  1263         complete.Subscribe( status );
       
  1264         }
       
  1265 
       
  1266 
       
  1267     // Run test
       
  1268     RDebug::Print( _L("CSensrvTest::DoRunAndWaitTest - Start Test Case") );
       
  1269     err = iTestCases->StartTestCase( aTestCase, aItem, iCompletedKey );
       
  1270 
       
  1271     if( err )
       
  1272         {
       
  1273         RDebug::Print( _L("CSensrvTest::DoRunAndWaitTest - StartTestCase: Error = %d"), err );
       
  1274         if( waitCompletion )
       
  1275             {
       
  1276             complete.Cancel();
       
  1277             }
       
  1278         return err;
       
  1279         }
       
  1280 
       
  1281 
       
  1282 
       
  1283     if( waitCompletion )
       
  1284         {
       
  1285         RDebug::Print( _L("CSensrvTest::DoRunAndWaitTest - Waiting...") );
       
  1286         User::WaitForRequest( status );
       
  1287 
       
  1288         complete.Get( err );
       
  1289 
       
  1290         RDebug::Print( _L("CSensrvTest::DoRunAndWaitTest - Test completed: %d"), err );
       
  1291 
       
  1292         // Clear completion value
       
  1293         RProperty::Set( KPSUidSensrvTest, iCompletedKey, KErrCompletion );
       
  1294         }
       
  1295 
       
  1296     return err;
       
  1297     }
       
  1298 
       
  1299 
       
  1300 // -----------------------------------------------------------------------------
       
  1301 // CSensrvTest::CreateAndDestroyChannelFinderL
       
  1302 // Parameters:
       
  1303 //
       
  1304 // -----------------------------------------------------------------------------
       
  1305 //
       
  1306 TInt CSensrvTest::CreateAndDestroyChannelFinderL( CStifItemParser& aItem )
       
  1307     {
       
  1308     RDebug::Print( _L("CSensrvTest::CreateAndDestroyChannelFinderL") );
       
  1309 
       
  1310     TInt err = CheckTest();
       
  1311     if( err )
       
  1312         {
       
  1313         RDebug::Print( _L("CSensrvTest::CreateAndDestroyChannelFinderL - Test creation error %d"), err );
       
  1314         return err;
       
  1315         }
       
  1316 
       
  1317     err = DoRunAndWaitTest( CSensrvTestCases::ECreateAndDestroyChannelFinder, aItem );
       
  1318 
       
  1319     RDebug::Print( _L("CSensrvTest::CreateAndDestroyChannelFinderL - Completed: %d"), err );
       
  1320 
       
  1321     return err;
       
  1322 
       
  1323     }
       
  1324 
       
  1325 // -----------------------------------------------------------------------------
       
  1326 // CSensrvTest::FindChannelsL
       
  1327 // Parameters:
       
  1328 //
       
  1329 // -----------------------------------------------------------------------------
       
  1330 //
       
  1331 TInt CSensrvTest::FindChannelsL( CStifItemParser& aItem )
       
  1332     {
       
  1333     RDebug::Print( _L("CSensrvTest::FindChannelsL") );
       
  1334 
       
  1335     TInt err = CheckTest();
       
  1336     if( err )
       
  1337         {
       
  1338         RDebug::Print( _L("CSensrvTest::FindChannelsL - Test creation error %d"), err );
       
  1339         return err;
       
  1340         }
       
  1341 
       
  1342 
       
  1343     err = DoRunAndWaitTest( CSensrvTestCases::EFindChannels, aItem );
       
  1344 
       
  1345     RDebug::Print( _L("CSensrvTest::FindChannelsL - Completed: %d"), err );
       
  1346 
       
  1347     return err;
       
  1348 
       
  1349     }
       
  1350 
       
  1351 // -----------------------------------------------------------------------------
       
  1352 // CSensrvTest::OpenChannelL
       
  1353 // Parameters:
       
  1354 //
       
  1355 // -----------------------------------------------------------------------------
       
  1356 //
       
  1357 TInt CSensrvTest::OpenChannelL( CStifItemParser& aItem )
       
  1358     {
       
  1359     RDebug::Print( _L("CSensrvTest::OpenChannelL") );
       
  1360 
       
  1361     TInt err = CheckTest();
       
  1362     if( err )
       
  1363         {
       
  1364         RDebug::Print( _L("CSensrvTest::OpenChannelL - Test creation error %d"), err );
       
  1365         return err;
       
  1366         }
       
  1367 
       
  1368     err = DoRunAndWaitTest( CSensrvTestCases::EOpenChannel, aItem );
       
  1369 
       
  1370     RDebug::Print( _L("CSensrvTest::OpenChannelL - Completed: %d"), err );
       
  1371 
       
  1372     return err;
       
  1373     }
       
  1374 
       
  1375 // -----------------------------------------------------------------------------
       
  1376 // CSensrvTest::CloseChannelL
       
  1377 // Parameters:
       
  1378 //
       
  1379 // -----------------------------------------------------------------------------
       
  1380 //
       
  1381 TInt CSensrvTest::CloseChannelL( CStifItemParser& aItem )
       
  1382     {
       
  1383     RDebug::Print( _L("CSensrvTest::CloseChannelL") );
       
  1384 
       
  1385     TInt err = CheckTest();
       
  1386     if( err )
       
  1387         {
       
  1388         RDebug::Print( _L("CSensrvTest::CloseChannelL - Test creation error %d"), err );
       
  1389         return err;
       
  1390         }
       
  1391 
       
  1392     err = DoRunAndWaitTest( CSensrvTestCases::ECloseChannel, aItem );
       
  1393 
       
  1394     RDebug::Print( _L("CSensrvTest::CloseChannelL - Completed %d"), err );
       
  1395 
       
  1396     return err;
       
  1397     }
       
  1398 // -----------------------------------------------------------------------------
       
  1399 // CSensrvTest::OpenClosePerformanceL
       
  1400 // Parameters:
       
  1401 //
       
  1402 // -----------------------------------------------------------------------------
       
  1403 //
       
  1404 TInt CSensrvTest::OpenClosePerformanceL( CStifItemParser& aItem )
       
  1405     {
       
  1406     RDebug::Print( _L("CSensrvTest::OpenClosePerformanceL") );
       
  1407 
       
  1408     TInt err = CheckTest();
       
  1409     if( err )
       
  1410         {
       
  1411         RDebug::Print( _L("CSensrvTest::OpenClosePerformanceL - Test creation error %d"), err );
       
  1412         return err;
       
  1413         }
       
  1414 
       
  1415     err = DoRunAndWaitTest( CSensrvTestCases::EOpenClosePerformance, aItem );
       
  1416 
       
  1417     RDebug::Print( _L("CSensrvTest::OpenClosePerformanceL - Completed: %d"), err );
       
  1418 
       
  1419     return err;
       
  1420 
       
  1421     }
       
  1422 
       
  1423 // -----------------------------------------------------------------------------
       
  1424 // CSensrvTest::StartDataListeningL
       
  1425 // Parameters:
       
  1426 //
       
  1427 // -----------------------------------------------------------------------------
       
  1428 //
       
  1429 TInt CSensrvTest::StartDataListeningL( CStifItemParser& aItem )
       
  1430     {
       
  1431     RDebug::Print( _L("CSensrvTest::StartDataListeningL") );
       
  1432 
       
  1433     TInt err = CheckTest();
       
  1434     if( err )
       
  1435         {
       
  1436         RDebug::Print( _L("CSensrvTest::StartDataListeningL - Test creation error %d"), err );
       
  1437         return err;
       
  1438         }
       
  1439 
       
  1440 
       
  1441 
       
  1442     err = DoRunAndWaitTest( CSensrvTestCases::EStartDataListening, aItem );
       
  1443 
       
  1444     RDebug::Print( _L("CSensrvTest::StartDataListeningL - Completed: %d"), err );
       
  1445 
       
  1446 
       
  1447     return err;
       
  1448     }
       
  1449 
       
  1450 // -----------------------------------------------------------------------------
       
  1451 // CSensrvTest::StopDataListeningL
       
  1452 // Parameters:
       
  1453 //
       
  1454 // -----------------------------------------------------------------------------
       
  1455 //
       
  1456 TInt CSensrvTest::StopDataListeningL( CStifItemParser& aItem )
       
  1457     {
       
  1458     RDebug::Print( _L("CSensrvTest::StopDataListeningL") );
       
  1459 
       
  1460     TInt err = CheckTest();
       
  1461     if( err )
       
  1462         {
       
  1463         RDebug::Print( _L("CSensrvTest::StopDataListeningL - Test creation error %d"), err );
       
  1464         return err;
       
  1465         }
       
  1466 
       
  1467     err = DoRunAndWaitTest( CSensrvTestCases::EStopDataListening, aItem );
       
  1468 
       
  1469     RDebug::Print( _L("CSensrvTest::StopDataListeningL - Completed: %d"), err );
       
  1470 
       
  1471     return err;
       
  1472     }
       
  1473 
       
  1474 // -----------------------------------------------------------------------------
       
  1475 // CSensrvTest::StopDataListeningL
       
  1476 // Parameters:
       
  1477 //
       
  1478 // -----------------------------------------------------------------------------
       
  1479 //
       
  1480 TInt CSensrvTest::StartListeningWhenChannelIsNotOpenL( CStifItemParser& aItem )
       
  1481     {
       
  1482     RDebug::Print( _L("CSensrvTest::StartListeningWhenChannelIsNotOpenL") );
       
  1483 
       
  1484     TInt err = CheckTest();
       
  1485     if( err )
       
  1486         {
       
  1487         RDebug::Print( _L("CSensrvTest::StartListeningWhenChannelIsNotOpenL - Test creation error %d"), err );
       
  1488         return err;
       
  1489         }
       
  1490 
       
  1491     err = DoRunAndWaitTest( CSensrvTestCases::EStartListeningWhenChannelIsNotOpen, aItem );
       
  1492 
       
  1493     RDebug::Print( _L("CSensrvTest::StartListeningWhenChannelIsNotOpenL - Completed: %d"), err );
       
  1494 
       
  1495     return err;
       
  1496     }
       
  1497 
       
  1498 
       
  1499 // -----------------------------------------------------------------------------
       
  1500 // CSensrvTest::PanicClient
       
  1501 // Parameters:
       
  1502 //
       
  1503 // -----------------------------------------------------------------------------
       
  1504 //
       
  1505 TInt CSensrvTest::PanicClient( CStifItemParser& aItem )
       
  1506     {
       
  1507     RDebug::Print( _L("CSensrvTest::PanicClient") );
       
  1508 
       
  1509     TInt err = CheckTest();
       
  1510     if( err )
       
  1511         {
       
  1512         RDebug::Print( _L("CSensrvTest::PanicClient - Test creation error %d"), err );
       
  1513         return err;
       
  1514         }
       
  1515 
       
  1516     err = DoRunAndWaitTest( CSensrvTestCases::EPanicClient, aItem );
       
  1517 
       
  1518     RDebug::Print( _L("CSensrvTest::PanicClient - Completed: %d"), err );
       
  1519 
       
  1520     return err;
       
  1521     }
       
  1522 
       
  1523 
       
  1524 // -----------------------------------------------------------------------------
       
  1525 // CSensrvTest::WaitSSYUnloading
       
  1526 // Parameters:
       
  1527 //
       
  1528 // -----------------------------------------------------------------------------
       
  1529 //
       
  1530 TInt CSensrvTest::WaitSSYUnloading( CStifItemParser& aItem )
       
  1531     {
       
  1532     RDebug::Print( _L("CSensrvTest::WaitSSYUnloading") );
       
  1533 
       
  1534     TInt err = CheckTest();
       
  1535     if( err )
       
  1536         {
       
  1537         RDebug::Print( _L("CSensrvTest::WaitSSYUnloading - Test creation error %d"), err );
       
  1538         return err;
       
  1539         }
       
  1540 
       
  1541     err = DoRunAndWaitTest( CSensrvTestCases::EWaitSSYUnloading, aItem );
       
  1542 
       
  1543     RDebug::Print( _L("CSensrvTest::WaitSSYUnloading - Completed: %d"), err );
       
  1544 
       
  1545     return err;
       
  1546     }
       
  1547 
       
  1548 // -----------------------------------------------------------------------------
       
  1549 // CSensrvTest::CreateNewThread
       
  1550 //
       
  1551 // -----------------------------------------------------------------------------
       
  1552 //
       
  1553 TInt CSensrvTest::CreateNewThread()
       
  1554     {
       
  1555     RDebug::Print( _L("CSensrvTest::CreateNewThread") );
       
  1556     TTime now;
       
  1557     now.HomeTime();
       
  1558 
       
  1559     _LIT( KSensrvTestThreadName, "SenSrvTestThread[%LD]" );
       
  1560 
       
  1561     TBuf<50> threadName;
       
  1562     threadName.Format( KSensrvTestThreadName, now.Int64() );
       
  1563 
       
  1564     RDebug::Print( _L("CSensrvTest::CreateNewThread: threadName = %S"), &threadName );
       
  1565 
       
  1566     TInt err = iThread.Create(threadName,
       
  1567                                 StartThread,
       
  1568                                 0x2000,
       
  1569                                 &(User::Heap()),
       
  1570                                 (TAny*)this);
       
  1571     if( err == KErrAlreadyExists )
       
  1572         {
       
  1573         User::After( 100000 ); // Wait 100 ms
       
  1574         now.HomeTime();
       
  1575         threadName.Format( KSensrvTestThreadName, now.Int64() );
       
  1576         RDebug::Print( _L("CSensrvTest::CreateNewThread: newthreadName = %S"), &threadName );
       
  1577         err = iThread.Create(threadName,
       
  1578                                 StartThread,
       
  1579                                 0x2000,
       
  1580                                 &(User::Heap()),
       
  1581                                 (TAny*)this);
       
  1582         }
       
  1583 
       
  1584     if( err )
       
  1585         {
       
  1586         RDebug::Print( _L("CSensrvTest::CreateNewThread: Thread creation error: %d"), err );
       
  1587         return err;
       
  1588         }
       
  1589     iThread.SetPriority( EPriorityNormal );
       
  1590 
       
  1591     iThread.Resume();
       
  1592 
       
  1593     return KErrNone;
       
  1594 
       
  1595     }
       
  1596 
       
  1597 // -----------------------------------------------------------------------------
       
  1598 // CSensrvTest::StartThread
       
  1599 //
       
  1600 // -----------------------------------------------------------------------------
       
  1601 //
       
  1602 TInt CSensrvTest::StartThread( TAny* aParameter )
       
  1603     {
       
  1604     RDebug::Print( _L("CSensrvTest::StartThread") );
       
  1605     CSensrvTest* test = static_cast<CSensrvTest*>(aParameter);
       
  1606 
       
  1607     TRAPD( err, test->DoStartThreadL() );
       
  1608 
       
  1609     return err;
       
  1610 
       
  1611     }
       
  1612 
       
  1613 // -----------------------------------------------------------------------------
       
  1614 // CSensrvTest::DoStartThreadL
       
  1615 //
       
  1616 // -----------------------------------------------------------------------------
       
  1617 //
       
  1618 void CSensrvTest::DoStartThreadL()
       
  1619     {
       
  1620     // Create new cleanup stack
       
  1621     CTrapCleanup* cleanup = CTrapCleanup::New();
       
  1622 
       
  1623     CActiveScheduler* scheduler = new( ELeave ) CActiveScheduler();
       
  1624     CActiveScheduler::Install( scheduler );
       
  1625 
       
  1626     TRAPD( err, iTestCases = CSensrvTestCases::NewL() );
       
  1627 
       
  1628     if( !err )
       
  1629         {
       
  1630         CActiveScheduler::Start();
       
  1631         }
       
  1632 
       
  1633     // Cleanup
       
  1634     delete scheduler;
       
  1635     scheduler = NULL;
       
  1636 
       
  1637     delete cleanup;
       
  1638     cleanup = NULL;
       
  1639 
       
  1640     delete iTestCases;
       
  1641     iTestCases = NULL;
       
  1642     RDebug::Print( _L("CSensrvTest::DoStartThreadL - END") );
       
  1643     }
       
  1644 
       
  1645 // -----------------------------------------------------------------------------
       
  1646 // CSensrvTest::StartPropertyListeningL
       
  1647 // Parameters:
       
  1648 //
       
  1649 // -----------------------------------------------------------------------------
       
  1650 //
       
  1651 TInt CSensrvTest::StartPropertyListeningL( CStifItemParser& aItem )
       
  1652     {
       
  1653     RDebug::Print( _L("CSensrvTest::StartPropertyListeningL") );
       
  1654 
       
  1655     TInt err = CheckTest();
       
  1656     if( err )
       
  1657         {
       
  1658         RDebug::Print( _L("CSensrvTest::StartPropertyListeningL - Test creation error %d"), err );
       
  1659         return err;
       
  1660         }
       
  1661 
       
  1662     err = DoRunAndWaitTest( CSensrvTestCases::EStartPropertyListening, aItem );
       
  1663 
       
  1664     RDebug::Print( _L("CSensrvTest::StartPropertyListeningL - Completed: %d"), err );
       
  1665 
       
  1666     return err;
       
  1667     }
       
  1668 
       
  1669 // -----------------------------------------------------------------------------
       
  1670 // CSensrvTest::StopPropertyListeningL
       
  1671 // -----------------------------------------------------------------------------
       
  1672 //
       
  1673 TInt CSensrvTest::StopPropertyListeningL( CStifItemParser& aItem )
       
  1674     {
       
  1675     RDebug::Print( _L("CSensrvTest::StopPropertyListeningL") );
       
  1676     TInt err = CheckTest();
       
  1677 
       
  1678     if( err )
       
  1679         {
       
  1680         RDebug::Print( _L("CSensrvTest::StopPropertyListeningL - Test creation error %d"), err );
       
  1681         return err;
       
  1682         }
       
  1683 
       
  1684     err = DoRunAndWaitTest( CSensrvTestCases::EStopPropertyListening, aItem );
       
  1685 
       
  1686     RDebug::Print( _L("CSensrvTest::StopPropertyListeningL - Completed: %d"), err );
       
  1687 
       
  1688     return err;
       
  1689     }
       
  1690 
       
  1691 // -----------------------------------------------------------------------------
       
  1692 // CSensrvTest::GetPropertyL
       
  1693 // -----------------------------------------------------------------------------
       
  1694 //
       
  1695 TInt CSensrvTest::GetPropertyL( CStifItemParser& aItem )
       
  1696     {
       
  1697     RDebug::Print( _L("CSensrvTest::GetPropertyL") );
       
  1698 
       
  1699     TInt err = CheckTest();
       
  1700     if( err )
       
  1701         {
       
  1702         RDebug::Print( _L("CSensrvTest::GetPropertyL - Test creation error %d"), err );
       
  1703         return err;
       
  1704         }
       
  1705 
       
  1706     err = DoRunAndWaitTest( CSensrvTestCases::EGetProperty, aItem );
       
  1707 
       
  1708     RDebug::Print( _L("CSensrvTest::GetPropertyL - Completed: %d"), err );
       
  1709 
       
  1710     return err;
       
  1711     }
       
  1712 
       
  1713 // -----------------------------------------------------------------------------
       
  1714 // CSensrvTest::SetPropertyL
       
  1715 // -----------------------------------------------------------------------------
       
  1716 //
       
  1717 TInt CSensrvTest::SetPropertyL( CStifItemParser& aItem )
       
  1718     {
       
  1719     RDebug::Print( _L("CSensrvTest::SetPropertyL") );
       
  1720 
       
  1721     TInt err = CheckTest();
       
  1722     if( err )
       
  1723         {
       
  1724         RDebug::Print( _L("CSensrvTest::SetPropertyL - Test creation error %d"), err );
       
  1725         return err;
       
  1726         }
       
  1727 
       
  1728     err = DoRunAndWaitTest( CSensrvTestCases::ESetProperty, aItem );
       
  1729 
       
  1730     RDebug::Print( _L("CSensrvTest::SetPropertyL - Completed: %d"), err );
       
  1731 
       
  1732     return err;
       
  1733     }
       
  1734 
       
  1735 // -----------------------------------------------------------------------------
       
  1736 // CSensrvTest::GetAllPropertiesL
       
  1737 // -----------------------------------------------------------------------------
       
  1738 //
       
  1739 TInt CSensrvTest::GetAllPropertiesL( CStifItemParser& aItem )
       
  1740     {
       
  1741     RDebug::Print( _L("CSensrvTest::GetAllPropertiesL") );
       
  1742 
       
  1743     TInt err = CheckTest();
       
  1744     if( err )
       
  1745         {
       
  1746         RDebug::Print( _L("CSensrvTest::GetAllPropertiesL - Test creation error %d"), err );
       
  1747         return err;
       
  1748         }
       
  1749 
       
  1750     err = DoRunAndWaitTest( CSensrvTestCases::EGetAllProperties, aItem );
       
  1751 
       
  1752     RDebug::Print( _L("CSensrvTest::GetAllPropertiesL - Completed: %d"), err );
       
  1753 
       
  1754     return err;
       
  1755     }
       
  1756 
       
  1757 // -----------------------------------------------------------------------------
       
  1758 // CSensrvTest::GetAllPropertiesWithPropertyIdL
       
  1759 // -----------------------------------------------------------------------------
       
  1760 //
       
  1761 TInt CSensrvTest::GetAllPropertiesWithPropertyIdL( CStifItemParser& aItem )
       
  1762     {
       
  1763     RDebug::Print( _L("CSensrvTest::GetAllPropertiesWithPropertyIdL") );
       
  1764 
       
  1765     TInt err = CheckTest();
       
  1766     if( err )
       
  1767         {
       
  1768         RDebug::Print( _L("CSensrvTest::GetAllPropertiesWithPropertyIdL - Test creation error %d"), err );
       
  1769         return err;
       
  1770         }
       
  1771 
       
  1772     err = DoRunAndWaitTest( CSensrvTestCases::EGetAllPropertiesWithPropertyIdL, aItem );
       
  1773 
       
  1774     RDebug::Print( _L("CSensrvTest::GetAllPropertiesWithPropertyIdL - Completed: %d"), err );
       
  1775 
       
  1776     return err;
       
  1777     }
       
  1778 
       
  1779 // -----------------------------------------------------------------------------
       
  1780 // CSensrvTest::GetAllPropertiesWithArrayIndexL
       
  1781 // -----------------------------------------------------------------------------
       
  1782 //
       
  1783 TInt CSensrvTest::GetAllPropertiesWithArrayIndexL( CStifItemParser& aItem )
       
  1784      {
       
  1785     RDebug::Print( _L("CSensrvTest::GetAllPropertiesWithArrayIndexL") );
       
  1786 
       
  1787     TInt err = CheckTest();
       
  1788     if( err )
       
  1789         {
       
  1790         RDebug::Print( _L("CSensrvTest::GetAllPropertiesWithArrayIndexL - Test creation error %d"), err );
       
  1791         return err;
       
  1792         }
       
  1793 
       
  1794     err = DoRunAndWaitTest( CSensrvTestCases::EGetAllPropertiesWithArrayIndexL, aItem );
       
  1795 
       
  1796     RDebug::Print( _L("CSensrvTest::GetAllPropertiesWithArrayIndexL - Completed: %d"), err );
       
  1797 
       
  1798     return err;
       
  1799     }
       
  1800 
       
  1801 // -----------------------------------------------------------------------------
       
  1802 // CSensrvTest::CheckPropertyChangedCount
       
  1803 // -----------------------------------------------------------------------------
       
  1804 //
       
  1805 TInt CSensrvTest::CheckPropertyChangedCount( CStifItemParser& aItem )
       
  1806     {
       
  1807     RDebug::Print( _L("CSensrvTest::CheckPropertyChangedCount") );
       
  1808 
       
  1809     TInt err = CheckTest();
       
  1810     if( err )
       
  1811         {
       
  1812         RDebug::Print( _L("CSensrvTest::CheckPropertyChangedCount - Test creation error %d"), err );
       
  1813         return err;
       
  1814         }
       
  1815 
       
  1816     TInt expectedCount( 0 );
       
  1817     err = aItem.GetNextInt( expectedCount );
       
  1818     if( err )
       
  1819         {
       
  1820         if( iTestCases->PropertyChangedCount() > 0 )
       
  1821             {
       
  1822             err = KErrNone;
       
  1823             }
       
  1824         else
       
  1825             {
       
  1826             RDebug::Print( _L("CSensrvTest::CheckPropertyChangedCount - Incorrect propertyChangedCount %d"), iTestCases->PropertyChangedCount() );
       
  1827             err = KErrGeneral;
       
  1828             }
       
  1829         }
       
  1830     else
       
  1831         {
       
  1832         if( iTestCases->PropertyChangedCount() == expectedCount )
       
  1833             {
       
  1834             err = KErrNone;
       
  1835             }
       
  1836         else
       
  1837             {
       
  1838             RDebug::Print( _L("CSensrvTest::CheckPropertyChangedCount - Incorrect propertyChangedCount %d"), iTestCases->PropertyChangedCount() );
       
  1839             err = KErrGeneral;
       
  1840             }
       
  1841         }
       
  1842 
       
  1843     iTestCases->ClearPropertyChangedCount();
       
  1844 
       
  1845     RDebug::Print( _L("CSensrvTest::CheckPropertyChangedCount - Completed: %d"), err );
       
  1846     return err;
       
  1847     }
       
  1848 
       
  1849 // -----------------------------------------------------------------------------
       
  1850 // CSensrvTest::CreateNewProcess
       
  1851 // -----------------------------------------------------------------------------
       
  1852 //
       
  1853 TInt CSensrvTest::CreateNewProcess( CStifItemParser& aItem )
       
  1854     {
       
  1855     RDebug::Print( _L("CSensrvTest::CreateNewProcess") );
       
  1856 
       
  1857     TInt err = CheckTest();
       
  1858     if( err )
       
  1859         {
       
  1860         RDebug::Print( _L("CSensrvTest::CreateNewProcess - Test creation error %d"), err );
       
  1861         return err;
       
  1862         }
       
  1863 
       
  1864     err = DoRunAndWaitTest( CSensrvTestCases::ECreateNewProcess, aItem );
       
  1865 
       
  1866     RDebug::Print( _L("CSensrvTest::CreateNewProcess - Completed: %d"), err );
       
  1867 
       
  1868     return err;
       
  1869     }
       
  1870 
       
  1871 // -----------------------------------------------------------------------------
       
  1872 // CSensrvTest::KillProcess
       
  1873 // -----------------------------------------------------------------------------
       
  1874 //
       
  1875 TInt CSensrvTest::KillProcess( CStifItemParser& aItem )
       
  1876     {
       
  1877     RDebug::Print( _L("CSensrvTest::KillProcess") );
       
  1878 
       
  1879     TInt err = CheckTest();
       
  1880     if( err )
       
  1881         {
       
  1882         RDebug::Print( _L("CSensrvTest::KillProcess - Test creation error %d"), err );
       
  1883         return err;
       
  1884         }
       
  1885 
       
  1886     err = DoRunAndWaitTest( CSensrvTestCases::EKillProcess, aItem );
       
  1887 
       
  1888     RDebug::Print( _L("CSensrvTest::KillProcess - Completed: %d"), err );
       
  1889 
       
  1890     return err;
       
  1891     }
       
  1892 
       
  1893     // -----------------------------------------------------------------------------
       
  1894 // CSensrvTest::ConditionUnitTestL
       
  1895 // -----------------------------------------------------------------------------
       
  1896 //
       
  1897 TInt CSensrvTest::ConditionUnitTestL( CStifItemParser& /*aItem*/ )
       
  1898     {
       
  1899     RDebug::Print( _L("CSensrvTest::ConditionUnitTestL") );
       
  1900 
       
  1901     TInt err = CheckTest();
       
  1902     if( err )
       
  1903         {
       
  1904         RDebug::Print( _L("CSensrvTest::ConditionUnitTestL - Test creation error %d"), err );
       
  1905         return err;
       
  1906         }
       
  1907 
       
  1908     TSensrvAccelerometerAxisData dataItemX;
       
  1909     dataItemX.iAxisX = 1000;
       
  1910     dataItemX.iAxisY = 100;
       
  1911     dataItemX.iAxisZ = 10;
       
  1912     TPckgBuf<TSensrvAccelerometerAxisData> dataBufX(dataItemX);
       
  1913 
       
  1914     //
       
  1915     // Condition creation tests
       
  1916     //
       
  1917 
       
  1918     TInt expectedErr(KErrNone);
       
  1919     CSensrvChannelCondition* testCondition = NULL;
       
  1920     for (TInt type=0; type <= ESensrvBinaryCondition; type++)
       
  1921         {
       
  1922         for (TInt oper=0; oper <= ESensrvOperatorBinaryAll; oper++)
       
  1923             {
       
  1924             TRAP(err,testCondition =
       
  1925                     CSensrvChannelCondition::NewL(static_cast<TSensrvConditionType>(type),
       
  1926                                                   static_cast<TSensrvConditionOperator>(oper),
       
  1927                                                   0,
       
  1928                                                   dataBufX));
       
  1929 
       
  1930             delete testCondition;
       
  1931             testCondition = NULL;
       
  1932 
       
  1933             if (   (type == ESensrvSingleLimitCondition && oper == ESensrvOperatorBinaryAnd)
       
  1934                 || (type == ESensrvSingleLimitCondition && oper == ESensrvOperatorBinaryAll)
       
  1935                 || (type == ESensrvRangeConditionLowerLimit && oper == ESensrvOperatorEquals)
       
  1936                 || (type == ESensrvRangeConditionLowerLimit && oper == ESensrvOperatorBinaryAnd)
       
  1937                 || (type == ESensrvRangeConditionLowerLimit && oper == ESensrvOperatorBinaryAll)
       
  1938                 || (type == ESensrvRangeConditionUpperLimit && oper == ESensrvOperatorEquals)
       
  1939                 || (type == ESensrvRangeConditionUpperLimit && oper == ESensrvOperatorBinaryAnd)
       
  1940                 || (type == ESensrvRangeConditionUpperLimit && oper == ESensrvOperatorBinaryAll)
       
  1941                 || (type == ESensrvBinaryCondition && oper == ESensrvOperatorGreaterThan)
       
  1942                 || (type == ESensrvBinaryCondition && oper == ESensrvOperatorGreaterThanOrEquals)
       
  1943                 || (type == ESensrvBinaryCondition && oper == ESensrvOperatorLessThan)
       
  1944                 || (type == ESensrvBinaryCondition && oper == ESensrvOperatorLessThanOrEquals)
       
  1945                )
       
  1946                 {
       
  1947                 expectedErr = KErrArgument;
       
  1948                 }
       
  1949             else
       
  1950                 {
       
  1951                 expectedErr = KErrNone;
       
  1952                 }
       
  1953 
       
  1954             if ( err != expectedErr)
       
  1955                 {
       
  1956                 RDebug::Print( _L("CSensrvTest::ConditionUnitTestL - Condition creation failure - type: %d, operator: %d, err: %d, expectedErr: %d"), type, oper, err, expectedErr );
       
  1957                 return KErrArgument;
       
  1958                 }
       
  1959             }
       
  1960         }
       
  1961 
       
  1962     //
       
  1963     // Getter tests
       
  1964     //
       
  1965 
       
  1966     testCondition = CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  1967                                                   ESensrvOperatorLessThanOrEquals,
       
  1968                                                   3,
       
  1969                                                   dataBufX);
       
  1970 
       
  1971     TPckgBuf<TSensrvAccelerometerAxisData> getBuf;
       
  1972     User::LeaveIfError(testCondition->GetConditionValue(getBuf));
       
  1973     TSensrvAccelerometerAxisData getItem1 = getBuf();
       
  1974 
       
  1975     HBufC8* smallBuf = HBufC8::NewL(sizeof(TSensrvAccelerometerAxisData)-1);
       
  1976     TPtr8 smallPtr(0,0);
       
  1977     smallPtr.Set(smallBuf->Des());
       
  1978     TInt overflowErr = testCondition->GetConditionValue(smallPtr);
       
  1979     delete smallBuf;
       
  1980 
       
  1981     if (overflowErr != KErrOverflow)
       
  1982         {
       
  1983         return KErrOverflow;
       
  1984         }
       
  1985 
       
  1986     if (   testCondition->ConditionType() != ESensrvRangeConditionLowerLimit
       
  1987         || testCondition->ConditionOperator() != ESensrvOperatorLessThanOrEquals
       
  1988         || testCondition->ConditionItemIndex() != 3
       
  1989         || getItem1.iAxisX != dataItemX.iAxisX
       
  1990         || getItem1.iAxisY != dataItemX.iAxisY
       
  1991         || getItem1.iAxisZ != dataItemX.iAxisZ
       
  1992         || getItem1.iTimeStamp != dataItemX.iTimeStamp
       
  1993        )
       
  1994         {
       
  1995         RDebug::Print( _L("CSensrvTest::ConditionUnitTestL - Getters testing failed") );
       
  1996         return KErrArgument;
       
  1997         }
       
  1998 
       
  1999     TTime startTime;
       
  2000     startTime.HomeTime();
       
  2001 
       
  2002     // Test getting data items speed
       
  2003     TInt i=0;
       
  2004     for (i=0; i<100000; i++)
       
  2005         {
       
  2006         TPckgBuf<TSensrvAccelerometerAxisData> getBuf;
       
  2007         testCondition->GetConditionValue(getBuf);
       
  2008         TSensrvAccelerometerAxisData getItem1 = getBuf();
       
  2009         if (getItem1.iAxisX == 1234)
       
  2010             {
       
  2011             return KErrArgument;
       
  2012             }
       
  2013         }
       
  2014 
       
  2015     TTime endTime;
       
  2016     endTime.HomeTime();
       
  2017 
       
  2018     TTimeIntervalMicroSeconds overallTime =  endTime.MicroSecondsFrom( startTime );
       
  2019 
       
  2020     RDebug::Print( _L("CSensrvTestCases::ConditionUnitTestL - Overall time for %d GetConditionValue %d microseconds"), i, overallTime.Int64() );
       
  2021 
       
  2022     startTime.HomeTime();
       
  2023 
       
  2024     TInt j=0;
       
  2025     for (j=0; j<100000; j++)
       
  2026         {
       
  2027         const TSensrvAccelerometerAxisData* getItem1 =
       
  2028             reinterpret_cast<const TSensrvAccelerometerAxisData*>(
       
  2029                 testCondition->ConditionValue().Ptr());
       
  2030 
       
  2031         if (getItem1->iAxisX == 1234)
       
  2032             {
       
  2033             return KErrArgument;
       
  2034             }
       
  2035         }
       
  2036 
       
  2037     endTime.HomeTime();
       
  2038 
       
  2039     TTimeIntervalMicroSeconds overallTime2 =  endTime.MicroSecondsFrom( startTime );
       
  2040 
       
  2041     RDebug::Print( _L("CSensrvTestCases::ConditionUnitTestL - Overall time for %d ConditionValue %d microseconds"), i, overallTime2.Int64() );
       
  2042 
       
  2043     RDebug::Print( _L("CSensrvTest::ConditionUnitTestL - Completed: %d"), err );
       
  2044 
       
  2045     return err;
       
  2046     }
       
  2047 
       
  2048 // -----------------------------------------------------------------------------
       
  2049 // CSensrvTest::ConditionSetUnitTestL
       
  2050 // -----------------------------------------------------------------------------
       
  2051 //
       
  2052 TInt CSensrvTest::ConditionSetUnitTestL( CStifItemParser& /*aItem*/ )
       
  2053     {
       
  2054     RDebug::Print( _L("CSensrvTest::ConditionSetUnitTestL") );
       
  2055 
       
  2056     TInt err = CheckTest();
       
  2057     if( err )
       
  2058         {
       
  2059         RDebug::Print( _L("CSensrvTest::ConditionSetUnitTestL - Test creation error %d"), err );
       
  2060         return err;
       
  2061         }
       
  2062 
       
  2063     TSensrvAccelerometerAxisData dataItemX;
       
  2064     dataItemX.iAxisX = 1000;
       
  2065     dataItemX.iAxisY = 0;
       
  2066     dataItemX.iAxisZ = 0;
       
  2067     TPckgBuf<TSensrvAccelerometerAxisData> dataBufX(dataItemX);
       
  2068 
       
  2069     TSensrvAccelerometerAxisData dataItemY1;
       
  2070     dataItemY1.iAxisX = 0;
       
  2071     dataItemY1.iAxisY = 100;
       
  2072     dataItemY1.iAxisZ = 0;
       
  2073     TPckgBuf<TSensrvAccelerometerAxisData> dataBufY1(dataItemY1);
       
  2074 
       
  2075     TSensrvAccelerometerAxisData dataItemY2;
       
  2076     dataItemY2.iAxisX = 0;
       
  2077     dataItemY2.iAxisY = 200;
       
  2078     dataItemY2.iAxisZ = 0;
       
  2079     TPckgBuf<TSensrvAccelerometerAxisData> dataBufY2(dataItemY2);
       
  2080 
       
  2081     CSensrvChannelConditionSet* set = NULL;
       
  2082     CSensrvChannelCondition* testCondition =NULL;
       
  2083     CSensrvChannelCondition* testCondition2 =NULL;
       
  2084     CSensrvChannelCondition* testCondition3 =NULL;
       
  2085     CSensrvChannelCondition* testCondition4 =NULL;
       
  2086     CSensrvChannelCondition* testCondition5 =NULL;
       
  2087     CSensrvChannelCondition* testCondition6 =NULL;
       
  2088 
       
  2089     // Add NULL condition to set
       
  2090     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2091     TRAP(err,set->AddChannelConditionL(NULL));
       
  2092 
       
  2093     if (err != KErrArgument)
       
  2094         {
       
  2095         return -1000;
       
  2096         }
       
  2097     else
       
  2098         {
       
  2099         err = KErrNone;
       
  2100         }
       
  2101 
       
  2102     if (set->AllConditions().Count() != 0)
       
  2103         {
       
  2104         return -1000;
       
  2105         }
       
  2106 
       
  2107     // Empty set should not be complete
       
  2108     if ((static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2109         {
       
  2110         return -1000;
       
  2111         }
       
  2112 
       
  2113     delete set;
       
  2114 
       
  2115     // Create set with one limit condition
       
  2116     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2117     testCondition =
       
  2118             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2119                                           ESensrvOperatorEquals,
       
  2120                                           0,
       
  2121                                           dataBufX);
       
  2122     set->AddChannelConditionL(testCondition);
       
  2123     if (!(static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2124         {
       
  2125         return -1001;
       
  2126         }
       
  2127 
       
  2128     if (set->AllConditions().Count() != 1)
       
  2129         {
       
  2130         return -1001;
       
  2131         }
       
  2132 
       
  2133     delete set;
       
  2134 
       
  2135     // Create set with one complete range condition
       
  2136     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2137     testCondition =
       
  2138             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2139                                           ESensrvOperatorGreaterThan,
       
  2140                                           0,
       
  2141                                           dataBufX);
       
  2142     testCondition2 =
       
  2143             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2144                                           ESensrvOperatorLessThanOrEquals,
       
  2145                                           0,
       
  2146                                           dataBufX);
       
  2147     set->AddChannelConditionL(testCondition);
       
  2148     set->AddChannelConditionL(testCondition2);
       
  2149     if (!(static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2150         {
       
  2151         return -1002;
       
  2152         }
       
  2153 
       
  2154     if (set->AllConditions().Count() != 2)
       
  2155         {
       
  2156         return -1002;
       
  2157         }
       
  2158 
       
  2159     delete set;
       
  2160 
       
  2161     // Create set with one incomplete range condition, lower
       
  2162     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2163     testCondition =
       
  2164             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2165                                           ESensrvOperatorGreaterThan,
       
  2166                                           0,
       
  2167                                           dataBufX);
       
  2168     set->AddChannelConditionL(testCondition);
       
  2169     if ((static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2170         {
       
  2171         return -1003;
       
  2172         }
       
  2173 
       
  2174     if (set->AllConditions().Count() != 1)
       
  2175         {
       
  2176         return -1003;
       
  2177         }
       
  2178 
       
  2179     delete set;
       
  2180 
       
  2181     // Create set with one incomplete range condition, upper
       
  2182     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2183     testCondition =
       
  2184             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2185                                           ESensrvOperatorGreaterThan,
       
  2186                                           0,
       
  2187                                           dataBufX);
       
  2188     set->AddChannelConditionL(testCondition);
       
  2189     if ((static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2190         {
       
  2191         return -10031;
       
  2192         }
       
  2193 
       
  2194     if (set->AllConditions().Count() != 1)
       
  2195         {
       
  2196         return -10031;
       
  2197         }
       
  2198 
       
  2199     delete set;
       
  2200 
       
  2201     // Create set with one limit and one complete range condition
       
  2202     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2203     testCondition =
       
  2204             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2205                                           ESensrvOperatorGreaterThan,
       
  2206                                           0,
       
  2207                                           dataBufX);
       
  2208     testCondition2 =
       
  2209             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2210                                           ESensrvOperatorLessThanOrEquals,
       
  2211                                           0,
       
  2212                                           dataBufX);
       
  2213     testCondition3 =
       
  2214             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2215                                           ESensrvOperatorEquals,
       
  2216                                           1,
       
  2217                                           dataBufX);
       
  2218 
       
  2219     set->AddChannelConditionL(testCondition);
       
  2220     set->AddChannelConditionL(testCondition2);
       
  2221     set->AddChannelConditionL(testCondition3);
       
  2222     if (!(static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2223         {
       
  2224         return -1004;
       
  2225         }
       
  2226 
       
  2227     if (set->AllConditions().Count() != 3)
       
  2228         {
       
  2229         return -1004;
       
  2230         }
       
  2231 
       
  2232     delete set;
       
  2233 
       
  2234     // Create set with two limit and one complete range condition, limit conditions added in between range parts
       
  2235     set = CSensrvChannelConditionSet::NewL(ESensrvAndConditionSet);
       
  2236     testCondition =
       
  2237             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2238                                           ESensrvOperatorGreaterThan,
       
  2239                                           0,
       
  2240                                           dataBufX);
       
  2241     testCondition2 =
       
  2242             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2243                                           ESensrvOperatorLessThanOrEquals,
       
  2244                                           0,
       
  2245                                           dataBufX);
       
  2246     testCondition3 =
       
  2247             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2248                                           ESensrvOperatorEquals,
       
  2249                                           1,
       
  2250                                           dataBufX);
       
  2251 
       
  2252     testCondition4 =
       
  2253             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2254                                           ESensrvOperatorLessThanOrEquals,
       
  2255                                           2,
       
  2256                                           dataBufX);
       
  2257 
       
  2258     set->AddChannelConditionL(testCondition2);
       
  2259     set->AddChannelConditionL(testCondition3);
       
  2260     set->AddChannelConditionL(testCondition4);
       
  2261     set->AddChannelConditionL(testCondition);
       
  2262     if (!(static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2263         {
       
  2264         return -1005;
       
  2265         }
       
  2266 
       
  2267     if (set->AllConditions().Count() != 4)
       
  2268         {
       
  2269         return -1005;
       
  2270         }
       
  2271 
       
  2272     delete set;
       
  2273 
       
  2274     // Create set with three limit conditions
       
  2275     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2276     testCondition =
       
  2277             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2278                                           ESensrvOperatorGreaterThan,
       
  2279                                           0,
       
  2280                                           dataBufX);
       
  2281     testCondition2 =
       
  2282             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2283                                           ESensrvOperatorLessThanOrEquals,
       
  2284                                           2,
       
  2285                                           dataBufX);
       
  2286     testCondition3 =
       
  2287             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2288                                           ESensrvOperatorEquals,
       
  2289                                           1,
       
  2290                                           dataBufX);
       
  2291 
       
  2292     set->AddChannelConditionL(testCondition2);
       
  2293     set->AddChannelConditionL(testCondition3);
       
  2294     set->AddChannelConditionL(testCondition);
       
  2295     if (!(static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2296         {
       
  2297         return -1006;
       
  2298         }
       
  2299 
       
  2300     if (set->AllConditions().Count() != 3)
       
  2301         {
       
  2302         return -1006;
       
  2303         }
       
  2304 
       
  2305     delete set;
       
  2306 
       
  2307     // Create set with three complete range conditions
       
  2308     set = CSensrvChannelConditionSet::NewL(ESensrvAndConditionSet);
       
  2309     testCondition =
       
  2310             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2311                                           ESensrvOperatorGreaterThan,
       
  2312                                           0,
       
  2313                                           dataBufX);
       
  2314     testCondition2 =
       
  2315             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2316                                           ESensrvOperatorLessThanOrEquals,
       
  2317                                           0,
       
  2318                                           dataBufX);
       
  2319     testCondition3 =
       
  2320             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2321                                           ESensrvOperatorLessThanOrEquals,
       
  2322                                           1,
       
  2323                                           dataBufX);
       
  2324     testCondition4 =
       
  2325             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2326                                           ESensrvOperatorGreaterThanOrEquals,
       
  2327                                           1,
       
  2328                                           dataBufX);
       
  2329 
       
  2330     testCondition5 =
       
  2331             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2332                                           ESensrvOperatorLessThan,
       
  2333                                           2,
       
  2334                                           dataBufX);
       
  2335     testCondition6 =
       
  2336             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2337                                           ESensrvOperatorGreaterThanOrEquals,
       
  2338                                           2,
       
  2339                                           dataBufX);
       
  2340 
       
  2341     set->AddChannelConditionL(testCondition2);
       
  2342     set->AddChannelConditionL(testCondition);
       
  2343     set->AddChannelConditionL(testCondition5);
       
  2344     set->AddChannelConditionL(testCondition3);
       
  2345     set->AddChannelConditionL(testCondition4);
       
  2346     set->AddChannelConditionL(testCondition6);
       
  2347     if (!(static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2348         {
       
  2349         return -1007;
       
  2350         }
       
  2351 
       
  2352     if (set->AllConditions().Count() != 6)
       
  2353         {
       
  2354         return -1007;
       
  2355         }
       
  2356 
       
  2357     delete set;
       
  2358 
       
  2359     // Create set with two complete range conditions and one incomplete range condition at the end
       
  2360     set = CSensrvChannelConditionSet::NewL(ESensrvAndConditionSet);
       
  2361     testCondition =
       
  2362             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2363                                           ESensrvOperatorGreaterThan,
       
  2364                                           0,
       
  2365                                           dataBufX);
       
  2366     testCondition2 =
       
  2367             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2368                                           ESensrvOperatorLessThanOrEquals,
       
  2369                                           0,
       
  2370                                           dataBufX);
       
  2371     testCondition3 =
       
  2372             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2373                                           ESensrvOperatorLessThanOrEquals,
       
  2374                                           1,
       
  2375                                           dataBufX);
       
  2376     testCondition4 =
       
  2377             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2378                                           ESensrvOperatorGreaterThanOrEquals,
       
  2379                                           1,
       
  2380                                           dataBufX);
       
  2381 
       
  2382     testCondition5 =
       
  2383             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2384                                           ESensrvOperatorLessThan,
       
  2385                                           2,
       
  2386                                           dataBufX);
       
  2387 
       
  2388     set->AddChannelConditionL(testCondition2);
       
  2389     set->AddChannelConditionL(testCondition);
       
  2390     set->AddChannelConditionL(testCondition3);
       
  2391     set->AddChannelConditionL(testCondition4);
       
  2392     set->AddChannelConditionL(testCondition5);
       
  2393 
       
  2394     if ((static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2395         {
       
  2396         return -1008;
       
  2397         }
       
  2398 
       
  2399     if (set->AllConditions().Count() != 5)
       
  2400         {
       
  2401         return -1008;
       
  2402         }
       
  2403 
       
  2404     delete set;
       
  2405 
       
  2406     // Create set with double less than range condition
       
  2407     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2408     testCondition =
       
  2409             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2410                                           ESensrvOperatorLessThan,
       
  2411                                           0,
       
  2412                                           dataBufX);
       
  2413     testCondition2 =
       
  2414             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2415                                           ESensrvOperatorLessThanOrEquals,
       
  2416                                           0,
       
  2417                                           dataBufX);
       
  2418     set->AddChannelConditionL(testCondition);
       
  2419     TRAP(err,set->AddChannelConditionL(testCondition2));
       
  2420     if (err != KErrArgument)
       
  2421         {
       
  2422         return -1009;
       
  2423         }
       
  2424     else
       
  2425         {
       
  2426         err = KErrNone;
       
  2427         }
       
  2428 
       
  2429     if ((static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2430         {
       
  2431         return -1009;
       
  2432         }
       
  2433 
       
  2434     if (set->AllConditions().Count() != 1)
       
  2435         {
       
  2436         return -1009;
       
  2437         }
       
  2438 
       
  2439     delete set;
       
  2440 
       
  2441     // Create set with double greater than range condition
       
  2442     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2443     testCondition =
       
  2444             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2445                                           ESensrvOperatorGreaterThan,
       
  2446                                           0,
       
  2447                                           dataBufX);
       
  2448     testCondition2 =
       
  2449             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2450                                           ESensrvOperatorGreaterThanOrEquals,
       
  2451                                           0,
       
  2452                                           dataBufX);
       
  2453     set->AddChannelConditionL(testCondition);
       
  2454     TRAP(err,set->AddChannelConditionL(testCondition2));
       
  2455     if (err != KErrArgument)
       
  2456         {
       
  2457         return -1010;
       
  2458         }
       
  2459     else
       
  2460         {
       
  2461         err = KErrNone;
       
  2462         }
       
  2463 
       
  2464     if ((static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2465         {
       
  2466         return -1010;
       
  2467         }
       
  2468 
       
  2469     if (set->AllConditions().Count() != 1)
       
  2470         {
       
  2471         return -1010;
       
  2472         }
       
  2473 
       
  2474     delete set;
       
  2475 
       
  2476     // Create set with two same index limit conditions
       
  2477     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2478     testCondition =
       
  2479             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2480                                           ESensrvOperatorGreaterThan,
       
  2481                                           0,
       
  2482                                           dataBufX);
       
  2483     testCondition2 =
       
  2484             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2485                                           ESensrvOperatorLessThan,
       
  2486                                           0,
       
  2487                                           dataBufX);
       
  2488     set->AddChannelConditionL(testCondition);
       
  2489     TRAP(err,set->AddChannelConditionL(testCondition2));
       
  2490     if (err != KErrArgument)
       
  2491         {
       
  2492         return -1011;
       
  2493         }
       
  2494     else
       
  2495         {
       
  2496         err = KErrNone;
       
  2497         }
       
  2498 
       
  2499     if (!(static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2500         {
       
  2501         return -1011;
       
  2502         }
       
  2503 
       
  2504     if (set->AllConditions().Count() != 1)
       
  2505         {
       
  2506         return -1011;
       
  2507         }
       
  2508 
       
  2509     delete set;
       
  2510 
       
  2511     // Create set with three same index range conditions
       
  2512     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2513     testCondition =
       
  2514             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2515                                           ESensrvOperatorGreaterThan,
       
  2516                                           0,
       
  2517                                           dataBufX);
       
  2518     testCondition2 =
       
  2519             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2520                                           ESensrvOperatorLessThanOrEquals,
       
  2521                                           0,
       
  2522                                           dataBufX);
       
  2523     testCondition3 =
       
  2524             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2525                                           ESensrvOperatorGreaterThanOrEquals,
       
  2526                                           0,
       
  2527                                           dataBufX);
       
  2528 
       
  2529     set->AddChannelConditionL(testCondition);
       
  2530     set->AddChannelConditionL(testCondition2);
       
  2531     TRAP(err,set->AddChannelConditionL(testCondition3));
       
  2532     if (err != KErrArgument)
       
  2533         {
       
  2534         return -1012;
       
  2535         }
       
  2536     else
       
  2537         {
       
  2538         err = KErrNone;
       
  2539         }
       
  2540 
       
  2541     if (!(static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2542         {
       
  2543         return -1012;
       
  2544         }
       
  2545 
       
  2546     if (set->AllConditions().Count() != 2)
       
  2547         {
       
  2548         return -1012;
       
  2549         }
       
  2550 
       
  2551     delete set;
       
  2552 
       
  2553     // Create set with same index range and limit condition
       
  2554     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2555     testCondition =
       
  2556             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2557                                           ESensrvOperatorGreaterThan,
       
  2558                                           0,
       
  2559                                           dataBufX);
       
  2560     testCondition2 =
       
  2561             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2562                                           ESensrvOperatorLessThanOrEquals,
       
  2563                                           0,
       
  2564                                           dataBufX);
       
  2565     testCondition3 =
       
  2566             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2567                                           ESensrvOperatorLessThan,
       
  2568                                           0,
       
  2569                                           dataBufX);
       
  2570 
       
  2571     set->AddChannelConditionL(testCondition);
       
  2572     set->AddChannelConditionL(testCondition2);
       
  2573     TRAP(err,set->AddChannelConditionL(testCondition3));
       
  2574     if (err != KErrArgument)
       
  2575         {
       
  2576         return -1013;
       
  2577         }
       
  2578     else
       
  2579         {
       
  2580         err = KErrNone;
       
  2581         }
       
  2582 
       
  2583     if (!(static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2584         {
       
  2585         return -1013;
       
  2586         }
       
  2587 
       
  2588     if (set->AllConditions().Count() != 2)
       
  2589         {
       
  2590         return -1013;
       
  2591         }
       
  2592 
       
  2593     delete set;
       
  2594 
       
  2595     // Create set with same index limit and range condition
       
  2596     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2597     testCondition =
       
  2598             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2599                                           ESensrvOperatorGreaterThan,
       
  2600                                           0,
       
  2601                                           dataBufX);
       
  2602     testCondition2 =
       
  2603             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2604                                           ESensrvOperatorLessThanOrEquals,
       
  2605                                           0,
       
  2606                                           dataBufX);
       
  2607     testCondition3 =
       
  2608             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2609                                           ESensrvOperatorLessThan,
       
  2610                                           0,
       
  2611                                           dataBufX);
       
  2612 
       
  2613     set->AddChannelConditionL(testCondition3);
       
  2614 
       
  2615     TRAP(err,set->AddChannelConditionL(testCondition));
       
  2616     if (err != KErrArgument)
       
  2617         {
       
  2618         return -1014;
       
  2619         }
       
  2620     else
       
  2621         {
       
  2622         err = KErrNone;
       
  2623         }
       
  2624 
       
  2625     TRAP(err,set->AddChannelConditionL(testCondition2));
       
  2626     if (err != KErrArgument)
       
  2627         {
       
  2628         return -1014;
       
  2629         }
       
  2630     else
       
  2631         {
       
  2632         err = KErrNone;
       
  2633         }
       
  2634 
       
  2635     if (!(static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2636         {
       
  2637         return -1014;
       
  2638         }
       
  2639 
       
  2640     if (set->AllConditions().Count() != 1)
       
  2641         {
       
  2642         return -1014;
       
  2643         }
       
  2644 
       
  2645     delete set;
       
  2646 
       
  2647     // Serialize and deserialize set with single condition
       
  2648     CSensrvChannelConditionSetImpl* set1 =
       
  2649         static_cast<CSensrvChannelConditionSetImpl*>(
       
  2650             CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet) );
       
  2651 
       
  2652     testCondition =
       
  2653             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2654                                           ESensrvOperatorLessThan,
       
  2655                                           0,
       
  2656                                           dataBufX);
       
  2657 
       
  2658     set1->AddChannelConditionL(testCondition);
       
  2659 
       
  2660     if (!set1->IsComplete())
       
  2661         {
       
  2662         return -1015;
       
  2663         }
       
  2664 
       
  2665     if (set1->AllConditions().Count() != 1)
       
  2666         {
       
  2667         return -1015;
       
  2668         }
       
  2669 
       
  2670     set1->SetConditionSetId(3);
       
  2671 
       
  2672     HBufC8* serializedSet = set1->SerializeLC();
       
  2673 
       
  2674     CSensrvChannelConditionSetImpl* set2 =
       
  2675         static_cast<CSensrvChannelConditionSetImpl*>(
       
  2676             CSensrvChannelConditionSet::NewL(ESensrvAndConditionSet) );
       
  2677 
       
  2678     set2->Deserialize(*serializedSet);
       
  2679 
       
  2680     CompareConditionSetsL(set1,
       
  2681                           set2);
       
  2682 
       
  2683     CleanupStack::PopAndDestroy(serializedSet);
       
  2684     delete set1;
       
  2685     delete set2;
       
  2686 
       
  2687     // Serialize and deserialize set with multiple conditions
       
  2688     set1 =
       
  2689         static_cast<CSensrvChannelConditionSetImpl*>(
       
  2690             CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet) );
       
  2691 
       
  2692     testCondition =
       
  2693             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2694                                           ESensrvOperatorLessThan,
       
  2695                                           0,
       
  2696                                           dataBufX);
       
  2697 
       
  2698     testCondition2 =
       
  2699             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2700                                           ESensrvOperatorGreaterThan,
       
  2701                                           1,
       
  2702                                           dataBufY1);
       
  2703     testCondition3 =
       
  2704             CSensrvChannelCondition::NewL(ESensrvRangeConditionLowerLimit,
       
  2705                                           ESensrvOperatorLessThanOrEquals,
       
  2706                                           1,
       
  2707                                           dataBufY2);
       
  2708 
       
  2709     testCondition4 =
       
  2710             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2711                                           ESensrvOperatorGreaterThan,
       
  2712                                           4,
       
  2713                                           dataBufX);
       
  2714 
       
  2715     set1->AddChannelConditionL(testCondition);
       
  2716     set1->AddChannelConditionL(testCondition2);
       
  2717     set1->AddChannelConditionL(testCondition3);
       
  2718     set1->AddChannelConditionL(testCondition4);
       
  2719 
       
  2720     if (!set1->IsComplete())
       
  2721         {
       
  2722         return -1016;
       
  2723         }
       
  2724 
       
  2725     if (set1->AllConditions().Count() != 4)
       
  2726         {
       
  2727         return -1016;
       
  2728         }
       
  2729 
       
  2730     set1->SetConditionSetId(3);
       
  2731 
       
  2732     serializedSet = set1->SerializeLC();
       
  2733 
       
  2734     set2 =
       
  2735         static_cast<CSensrvChannelConditionSetImpl*>(
       
  2736             CSensrvChannelConditionSet::NewL(ESensrvAndConditionSet) );
       
  2737 
       
  2738     set2->Deserialize(*serializedSet);
       
  2739 
       
  2740     CompareConditionSetsL(set1,
       
  2741                           set2);
       
  2742 
       
  2743     CleanupStack::PopAndDestroy(serializedSet);
       
  2744     delete set1;
       
  2745     delete set2;
       
  2746 
       
  2747     // Create set with same index partial range and limit condition
       
  2748     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2749     testCondition =
       
  2750             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2751                                           ESensrvOperatorGreaterThan,
       
  2752                                           0,
       
  2753                                           dataBufX);
       
  2754     testCondition3 =
       
  2755             CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,
       
  2756                                           ESensrvOperatorLessThan,
       
  2757                                           0,
       
  2758                                           dataBufX);
       
  2759 
       
  2760     set->AddChannelConditionL(testCondition);
       
  2761     TRAP(err,set->AddChannelConditionL(testCondition3));
       
  2762     if (err != KErrArgument)
       
  2763         {
       
  2764         return -1017;
       
  2765         }
       
  2766     else
       
  2767         {
       
  2768         err = KErrNone;
       
  2769         }
       
  2770 
       
  2771     if ((static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2772         {
       
  2773         return -1017;
       
  2774         }
       
  2775 
       
  2776     if (set->AllConditions().Count() != 1)
       
  2777         {
       
  2778         return -1017;
       
  2779         }
       
  2780 
       
  2781     delete set;
       
  2782 
       
  2783     // Create set with same index binary condition and partial range
       
  2784     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2785     testCondition =
       
  2786             CSensrvChannelCondition::NewL(ESensrvBinaryCondition,
       
  2787                                           ESensrvOperatorBinaryAll,
       
  2788                                           0,
       
  2789                                           dataBufX);
       
  2790     testCondition2 =
       
  2791             CSensrvChannelCondition::NewL(ESensrvBinaryCondition,
       
  2792                                           ESensrvOperatorBinaryAll,
       
  2793                                           0,
       
  2794                                           dataBufX);
       
  2795 
       
  2796     testCondition3 =
       
  2797             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2798                                           ESensrvOperatorGreaterThan,
       
  2799                                           0,
       
  2800                                           dataBufX);
       
  2801 
       
  2802     set->AddChannelConditionL(testCondition);
       
  2803     TRAP(err,set->AddChannelConditionL(testCondition2));
       
  2804     if (err != KErrArgument)
       
  2805         {
       
  2806         return -1018;
       
  2807         }
       
  2808     else
       
  2809         {
       
  2810         err = KErrNone;
       
  2811         }
       
  2812 
       
  2813     TRAP(err,set->AddChannelConditionL(testCondition3));
       
  2814     if (err != KErrArgument)
       
  2815         {
       
  2816         return -1018;
       
  2817         }
       
  2818     else
       
  2819         {
       
  2820         err = KErrNone;
       
  2821         }
       
  2822 
       
  2823     if (!(static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2824         {
       
  2825         return -1018;
       
  2826         }
       
  2827 
       
  2828     if (set->AllConditions().Count() != 1)
       
  2829         {
       
  2830         return -1018;
       
  2831         }
       
  2832 
       
  2833     delete set;
       
  2834 
       
  2835     // Create set with same index binary condition with partial range
       
  2836     set = CSensrvChannelConditionSet::NewL(ESensrvOrConditionSet);
       
  2837     testCondition =
       
  2838             CSensrvChannelCondition::NewL(ESensrvRangeConditionUpperLimit,
       
  2839                                           ESensrvOperatorGreaterThan,
       
  2840                                           0,
       
  2841                                           dataBufX);
       
  2842     testCondition3 =
       
  2843             CSensrvChannelCondition::NewL(ESensrvBinaryCondition,
       
  2844                                           ESensrvOperatorBinaryAll,
       
  2845                                           0,
       
  2846                                           dataBufX);
       
  2847 
       
  2848     set->AddChannelConditionL(testCondition);
       
  2849     TRAP(err,set->AddChannelConditionL(testCondition3));
       
  2850     if (err != KErrArgument)
       
  2851         {
       
  2852         return -1019;
       
  2853         }
       
  2854     else
       
  2855         {
       
  2856         err = KErrNone;
       
  2857         }
       
  2858 
       
  2859     if ((static_cast<CSensrvChannelConditionSetImpl*>(set))->IsComplete())
       
  2860         {
       
  2861         return -1019;
       
  2862         }
       
  2863 
       
  2864     if (set->AllConditions().Count() != 1)
       
  2865         {
       
  2866         return -1019;
       
  2867         }
       
  2868 
       
  2869     delete set;
       
  2870 
       
  2871     RDebug::Print( _L("CSensrvTest::ConditionSetUnitTestL - Completed: %d"), err );
       
  2872 
       
  2873     return err;
       
  2874     }
       
  2875 
       
  2876 // -----------------------------------------------------------------------------
       
  2877 // Compares two condition sets for equality
       
  2878 // -----------------------------------------------------------------------------
       
  2879 //
       
  2880 void CSensrvTest::CompareConditionSetsL(CSensrvChannelConditionSetImpl* aSet1,
       
  2881                                          CSensrvChannelConditionSetImpl* aSet2)
       
  2882     {
       
  2883     const RSensrvChannelConditionList* list1 = &(aSet1->AllConditions());
       
  2884     const RSensrvChannelConditionList* list2 = &(aSet2->AllConditions());
       
  2885 
       
  2886     if (
       
  2887           aSet1->ConditionSetId() != aSet2->ConditionSetId()
       
  2888        || aSet1->IsJustAdded() != aSet2->IsJustAdded()
       
  2889        || aSet2->IsComplete() != aSet2->IsComplete()
       
  2890        || list1->Count() != list2->Count()
       
  2891        )
       
  2892         {
       
  2893         User::Leave(KErrArgument);
       
  2894         }
       
  2895 
       
  2896     for (TInt i = 0; i < list1->Count(); i++)
       
  2897         {
       
  2898         TPckgBuf<TSensrvAccelerometerAxisData> getBuf1;
       
  2899         User::LeaveIfError((*list1)[i]->GetConditionValue(getBuf1));
       
  2900         TSensrvAccelerometerAxisData getItem1 = getBuf1();
       
  2901 
       
  2902         TPckgBuf<TSensrvAccelerometerAxisData> getBuf2;
       
  2903         User::LeaveIfError((*list2)[i]->GetConditionValue(getBuf2));
       
  2904         TSensrvAccelerometerAxisData getItem2 = getBuf2();
       
  2905 
       
  2906         if (
       
  2907                (*list1)[i]->ConditionType() != (*list2)[i]->ConditionType()
       
  2908             || (*list1)[i]->ConditionOperator() != (*list2)[i]->ConditionOperator()
       
  2909             || (*list1)[i]->ConditionItemIndex() != (*list2)[i]->ConditionItemIndex()
       
  2910             || getItem1.iAxisX != getItem2.iAxisX
       
  2911             || getItem1.iAxisY != getItem2.iAxisY
       
  2912             || getItem1.iAxisZ != getItem2.iAxisZ
       
  2913             || getItem1.iTimeStamp != getItem2.iTimeStamp
       
  2914            )
       
  2915             {
       
  2916             User::Leave(KErrArgument);
       
  2917             }
       
  2918         }
       
  2919     }
       
  2920 
       
  2921 // -----------------------------------------------------------------------------
       
  2922 // CSensrvTest::AddConditionSetL
       
  2923 // -----------------------------------------------------------------------------
       
  2924 //
       
  2925 TInt CSensrvTest::AddConditionSetL( CStifItemParser& aItem )
       
  2926     {
       
  2927     RDebug::Print( _L("CSensrvTest::AddConditionSetL") );
       
  2928 
       
  2929     TInt err = CheckTest();
       
  2930     if( err )
       
  2931         {
       
  2932         RDebug::Print( _L("CSensrvTest::AddConditionSetL - Test creation error %d"), err );
       
  2933         return err;
       
  2934         }
       
  2935 
       
  2936     err = DoRunAndWaitTest( CSensrvTestCases::EAddConditionSet, aItem );
       
  2937 
       
  2938     RDebug::Print( _L("CSensrvTest::AddConditionSetL - Completed: %d"), err );
       
  2939 
       
  2940     return err;
       
  2941     }
       
  2942 
       
  2943 // -----------------------------------------------------------------------------
       
  2944 // CSensrvTest::RemoveConditionsL
       
  2945 // -----------------------------------------------------------------------------
       
  2946 //
       
  2947 TInt CSensrvTest::RemoveConditionsL( CStifItemParser& aItem )
       
  2948     {
       
  2949     RDebug::Print( _L("CSensrvTest::RemoveConditionsL") );
       
  2950 
       
  2951     TInt err = CheckTest();
       
  2952     if( err )
       
  2953         {
       
  2954         RDebug::Print( _L("CSensrvTest::RemoveConditionsL - Test creation error %d"), err );
       
  2955         return err;
       
  2956         }
       
  2957 
       
  2958     err = DoRunAndWaitTest( CSensrvTestCases::ERemoveConditions, aItem );
       
  2959 
       
  2960     RDebug::Print( _L("CSensrvTest::RemoveConditionsL - Completed: %d"), err );
       
  2961 
       
  2962     return err;
       
  2963     }
       
  2964 
       
  2965 // -----------------------------------------------------------------------------
       
  2966 // CSensrvTest::AddConditionL
       
  2967 // -----------------------------------------------------------------------------
       
  2968 //
       
  2969 TInt CSensrvTest::AddConditionL( CStifItemParser& aItem )
       
  2970     {
       
  2971     RDebug::Print( _L("CSensrvTest::AddConditionL") );
       
  2972 
       
  2973     TInt err = CheckTest();
       
  2974     if( err )
       
  2975         {
       
  2976         RDebug::Print( _L("CSensrvTest::AddConditionL - Test creation error %d"), err );
       
  2977         return err;
       
  2978         }
       
  2979 
       
  2980     err = DoRunAndWaitTest( CSensrvTestCases::EAddCondition, aItem );
       
  2981 
       
  2982     RDebug::Print( _L("CSensrvTest::AddConditionL - Completed: %d"), err );
       
  2983 
       
  2984     return err;
       
  2985     }
       
  2986 
       
  2987 
       
  2988 // -----------------------------------------------------------------------------
       
  2989 // CSensrvTest::StartConditionListeningL
       
  2990 // Parameters:
       
  2991 //
       
  2992 // -----------------------------------------------------------------------------
       
  2993 //
       
  2994 TInt CSensrvTest::StartConditionListeningL( CStifItemParser& aItem )
       
  2995     {
       
  2996     RDebug::Print( _L("CSensrvTest::StartConditionListeningL") );
       
  2997 
       
  2998     TInt err = CheckTest();
       
  2999     if( err )
       
  3000         {
       
  3001         RDebug::Print( _L("CSensrvTest::StartConditionListeningL - Test creation error %d"), err );
       
  3002         return err;
       
  3003         }
       
  3004 
       
  3005     err = DoRunAndWaitTest( CSensrvTestCases::EStartConditionListening, aItem );
       
  3006 
       
  3007     RDebug::Print( _L("CSensrvTest::StartConditionListeningL - Completed: %d"), err );
       
  3008 
       
  3009 
       
  3010     return err;
       
  3011     }
       
  3012 
       
  3013 // -----------------------------------------------------------------------------
       
  3014 // CSensrvTest::StopConditionListeningL
       
  3015 // Parameters:
       
  3016 //
       
  3017 // -----------------------------------------------------------------------------
       
  3018 //
       
  3019 TInt CSensrvTest::StopConditionListeningL( CStifItemParser& aItem )
       
  3020     {
       
  3021     RDebug::Print( _L("CSensrvTest::StopConditionListeningL") );
       
  3022 
       
  3023     TInt err = CheckTest();
       
  3024     if( err )
       
  3025         {
       
  3026         RDebug::Print( _L("CSensrvTest::StopConditionListeningL - Test creation error %d"), err );
       
  3027         return err;
       
  3028         }
       
  3029 
       
  3030     err = DoRunAndWaitTest( CSensrvTestCases::EStopConditionListening, aItem );
       
  3031 
       
  3032     RDebug::Print( _L("CSensrvTest::StopConditionListeningL - Completed: %d"), err );
       
  3033 
       
  3034     return err;
       
  3035     }
       
  3036 
       
  3037 // -----------------------------------------------------------------------------
       
  3038 // CSensrvTest::GetPSValue
       
  3039 // Parameters: SRKey form SensrvInternalPSKeys.h(TUint32), value(TInt)
       
  3040 //
       
  3041 // -----------------------------------------------------------------------------
       
  3042 //
       
  3043 TInt CSensrvTest::GetPSValue( CStifItemParser& aItem )
       
  3044     {
       
  3045     RDebug::Print( _L("CSensrvTest::GetPSValue") );
       
  3046 
       
  3047     TUint srKey;
       
  3048     TInt value;
       
  3049     TInt expectedValue;
       
  3050 
       
  3051     TInt err = aItem.GetNextInt( srKey );
       
  3052     if( err )
       
  3053         {
       
  3054         RDebug::Print( _L("CSensrvTest::GetPSValue: srKey error: %d"), err );
       
  3055         return err;
       
  3056         }
       
  3057 
       
  3058     err = aItem.GetNextInt( expectedValue );
       
  3059     if( err )
       
  3060         {
       
  3061         RDebug::Print(  _L("CSensrvTest::GetPSValue: value error: %d"), err );
       
  3062         return err;
       
  3063         }
       
  3064 
       
  3065     err = RProperty::Get( KPSUidSensrvTest, srKey, value );
       
  3066     if( err )
       
  3067         {
       
  3068         RDebug::Print(  _L("CSensrvTest::GetPSValue: value Get error: %d"), err );
       
  3069         return err;
       
  3070         }
       
  3071 
       
  3072     RDebug::Print( _L("CSensrvTest::GetPSValue - RProperty::Get( %d, %d ), expected value %d"),
       
  3073         srKey, value, expectedValue );
       
  3074 
       
  3075     return !( value == expectedValue );
       
  3076     }
       
  3077 
       
  3078 // -----------------------------------------------------------------------------
       
  3079 // CSensrvTest::CheckConditionMetCount
       
  3080 // -----------------------------------------------------------------------------
       
  3081 //
       
  3082 TInt CSensrvTest::CheckConditionMetCount( CStifItemParser& aItem )
       
  3083     {
       
  3084     RDebug::Print( _L("CSensrvTest::CheckConditionMetCount") );
       
  3085 
       
  3086     TInt err = CheckTest();
       
  3087     if( err )
       
  3088         {
       
  3089         RDebug::Print( _L("CSensrvTest::CheckConditionMetCount - Test creation error %d"), err );
       
  3090         return err;
       
  3091         }
       
  3092 
       
  3093     TInt expectedCount( KErrNotFound );
       
  3094     err = aItem.GetNextInt( expectedCount );
       
  3095     if( err == KErrNone )
       
  3096         {
       
  3097         if( iTestCases->ConditionMetCount() == expectedCount )
       
  3098             {
       
  3099             RDebug::Print( _L("CSensrvTest::CheckConditionMetCount - Correct ConditionMetCount %d"), iTestCases->ConditionMetCount() );
       
  3100             err = KErrNone;
       
  3101             }
       
  3102         else
       
  3103             {
       
  3104             RDebug::Print( _L("CSensrvTest::CheckConditionMetCount - Incorrect ConditionMetCount %d"), iTestCases->ConditionMetCount() );
       
  3105             err = KErrGeneral;
       
  3106             }
       
  3107         }
       
  3108 
       
  3109     RDebug::Print( _L("CSensrvTest::CheckConditionMetCount - Completed: %d"), err );
       
  3110     return err;
       
  3111     }
       
  3112 
       
  3113 // -----------------------------------------------------------------------------
       
  3114 // CSensrvTest::CheckFoundChannelCount
       
  3115 // -----------------------------------------------------------------------------
       
  3116 //
       
  3117 TInt CSensrvTest::CheckFoundChannelCount( CStifItemParser& aItem )
       
  3118     {
       
  3119     RDebug::Print( _L("CSensrvTest::CheckFoundChannelCount") );
       
  3120 
       
  3121     TInt err = CheckTest();
       
  3122     if( err )
       
  3123         {
       
  3124         RDebug::Print( _L("CSensrvTest::CheckFoundChannelCount - Test creation error %d"), err );
       
  3125         return err;
       
  3126         }
       
  3127 
       
  3128     TInt expectedCount( KErrNotFound );
       
  3129     err = aItem.GetNextInt( expectedCount );
       
  3130     if( err == KErrNone )
       
  3131         {
       
  3132         if( iTestCases->FoundChannelCount() == expectedCount )
       
  3133             {
       
  3134             RDebug::Print( _L("CSensrvTest::CheckFoundChannelCount - Correct FoundChannelCount %d"), iTestCases->FoundChannelCount() );
       
  3135             err = KErrNone;
       
  3136             }
       
  3137         else
       
  3138             {
       
  3139             RDebug::Print( _L("CSensrvTest::CheckFoundChannelCount - Incorrect FoundChannelCount %d"), iTestCases->FoundChannelCount() );
       
  3140             err = KErrGeneral;
       
  3141             }
       
  3142         }
       
  3143 
       
  3144     RDebug::Print( _L("CSensrvTest::CheckFoundChannelCount - Completed: %d"), err );
       
  3145     return err;
       
  3146     }
       
  3147 
       
  3148 // -----------------------------------------------------------------------------
       
  3149 // CSensrvTest::StartChannelChangeListeningL
       
  3150 // Parameters:
       
  3151 //
       
  3152 // -----------------------------------------------------------------------------
       
  3153 //
       
  3154 TInt CSensrvTest::StartChannelChangeListeningL( CStifItemParser& aItem )
       
  3155     {
       
  3156     RDebug::Print( _L("CSensrvTest::StartChannelChangeListeningL") );
       
  3157 
       
  3158     TInt err = CheckTest();
       
  3159     if( err )
       
  3160         {
       
  3161         RDebug::Print( _L("CSensrvTest::StartChannelChangeListeningL - Test creation error %d"), err );
       
  3162         return err;
       
  3163         }
       
  3164 
       
  3165     err = DoRunAndWaitTest( CSensrvTestCases::EStartChannelChangeListening, aItem );
       
  3166 
       
  3167     RDebug::Print( _L("CSensrvTest::StartChannelChangeListeningL - Completed: %d"), err );
       
  3168 
       
  3169     return err;
       
  3170     }
       
  3171 
       
  3172 // -----------------------------------------------------------------------------
       
  3173 // CSensrvTest::StopChannelChangeListeningL
       
  3174 // -----------------------------------------------------------------------------
       
  3175 //
       
  3176 TInt CSensrvTest::StopChannelChangeListeningL( CStifItemParser& aItem )
       
  3177     {
       
  3178     RDebug::Print( _L("CSensrvTest::StopChannelChangeListeningL") );
       
  3179     TInt err = CheckTest();
       
  3180 
       
  3181     if( err )
       
  3182         {
       
  3183         RDebug::Print( _L("CSensrvTest::StopChannelChangeListeningL - Test creation error %d"), err );
       
  3184         return err;
       
  3185         }
       
  3186 
       
  3187     err = DoRunAndWaitTest( CSensrvTestCases::EStopChannelChangeListening, aItem );
       
  3188 
       
  3189     RDebug::Print( _L("CSensrvTest::StopChannelChangeListeningL - Completed: %d"), err );
       
  3190 
       
  3191     return err;
       
  3192     }
       
  3193 
       
  3194 
       
  3195 // -----------------------------------------------------------------------------
       
  3196 // CSensrvTest::AdjustChannelsL
       
  3197 // -----------------------------------------------------------------------------
       
  3198 //
       
  3199 TInt CSensrvTest::AdjustChannelsL( CStifItemParser& aItem )
       
  3200     {
       
  3201     RDebug::Print( _L("CSensrvTest::AdjustChannelsL") );
       
  3202     TInt err = CheckTest();
       
  3203 
       
  3204     if( err )
       
  3205         {
       
  3206         RDebug::Print( _L("CSensrvTest::AdjustChannelsL - Test creation error %d"), err );
       
  3207         return err;
       
  3208         }
       
  3209 
       
  3210     err = iTestCases->AdjustChannels(aItem);
       
  3211 
       
  3212     RDebug::Print( _L("CSensrvTest::AdjustChannelsL - Completed: %d"), err );
       
  3213 
       
  3214     return err;
       
  3215     }
       
  3216 
       
  3217 // -----------------------------------------------------------------------------
       
  3218 // CSensrvTest::GetPsResult
       
  3219 // -----------------------------------------------------------------------------
       
  3220 //
       
  3221 TInt CSensrvTest::GetPsResult( CStifItemParser& aItem )
       
  3222     {
       
  3223     RDebug::Print( _L("CSensrvTest::GetPsResult") );
       
  3224     TInt err = CheckTest();
       
  3225 
       
  3226     if( err )
       
  3227         {
       
  3228         RDebug::Print( _L("CSensrvTest::GetPsResult - Test creation error %d"), err );
       
  3229         return err;
       
  3230         }
       
  3231 
       
  3232     // Check ps value
       
  3233     RProperty property;
       
  3234     TInt id;
       
  3235 
       
  3236     err = aItem.GetNextInt( id );
       
  3237 
       
  3238     if (!err)
       
  3239         {
       
  3240         TRequestStatus status;
       
  3241         RProperty::Get(KPSUidSensrvTest, id, err);
       
  3242         }
       
  3243 
       
  3244     RDebug::Print( _L("CSensrvTest::GetPsResult - Completed: %d"), err );
       
  3245 
       
  3246     return err;
       
  3247     }
       
  3248 
       
  3249 // -----------------------------------------------------------------------------
       
  3250 // CSensrvTest::StoreFoundChannelsL
       
  3251 // -----------------------------------------------------------------------------
       
  3252 //
       
  3253 TInt CSensrvTest::StoreFoundChannelsL( CStifItemParser& aItem )
       
  3254     {
       
  3255     RDebug::Print( _L("CSensrvTest::StoreFoundChannelsL") );
       
  3256     TInt err = CheckTest();
       
  3257 
       
  3258     if( err )
       
  3259         {
       
  3260         RDebug::Print( _L("CSensrvTest::StoreFoundChannelsL - Test creation error %d"), err );
       
  3261         return err;
       
  3262         }
       
  3263 
       
  3264     err = iTestCases->StoreFoundChannelsL(aItem);
       
  3265 
       
  3266     RDebug::Print( _L("CSensrvTest::StoreFoundChannelsL - Completed: %d"), err );
       
  3267 
       
  3268     return err;
       
  3269     }
       
  3270     
       
  3271 // -----------------------------------------------------------------------------
       
  3272 // CSensrvTest::StoreFoundChannelsL
       
  3273 // -----------------------------------------------------------------------------
       
  3274 //
       
  3275 TInt CSensrvTest::SetDefaultValueL( CStifItemParser& aItem )
       
  3276     {
       
  3277     RDebug::Print( _L("CSensrvTest::SetDefaultValueL") );
       
  3278     TInt err = CheckTest();
       
  3279 
       
  3280     if( err )
       
  3281         {
       
  3282         RDebug::Print( _L("CSensrvTest::SetDefaultValueL - Test creation error %d"), err );
       
  3283         return err;
       
  3284         }
       
  3285 
       
  3286     err = iTestCases->SetDefaultValueL(aItem);
       
  3287 
       
  3288     RDebug::Print( _L("CSensrvTest::SetDefaultValueL - Completed: %d"), err );
       
  3289 
       
  3290     return err;
       
  3291     }
       
  3292 
       
  3293 // -----------------------------------------------------------------------------
       
  3294 // CSensrvTest::CheckListenedSetPropertySuccessIndicator
       
  3295 // -----------------------------------------------------------------------------
       
  3296 //
       
  3297 TInt CSensrvTest::CheckListenedSetPropertySuccessIndicator( CStifItemParser& aItem )
       
  3298     {
       
  3299     // First test argument is the expected value.
       
  3300     // Second test argument is the expected count.
       
  3301     // Negative argument value means that the argument is not used.
       
  3302 
       
  3303     TInt expectedIndValue( 0 );
       
  3304     TInt err( aItem.GetNextInt( expectedIndValue ) );
       
  3305     if( err )
       
  3306         {
       
  3307         RDebug::Print( _L("CSensrvTest::CheckListenedSetPropertySuccessIndicator: expected value error: %d"), err );
       
  3308         }
       
  3309     else
       
  3310         {
       
  3311         TInt expectedIndCount( 0 );
       
  3312         err = aItem.GetNextInt( expectedIndCount );
       
  3313         if( err )
       
  3314             {
       
  3315             RDebug::Print(  _L("CSensrvTest::CheckListenedSetPropertySuccessIndicator: expected count error: %d"), err );
       
  3316             }
       
  3317         else
       
  3318             {
       
  3319             TInt indValue( iTestCases->GetSetPropertySuccessIndicator() );
       
  3320             if ( expectedIndValue >= 0 && expectedIndValue != indValue )
       
  3321                 {
       
  3322                 RDebug::Print(  _L("CSensrvTest::CheckListenedSetPropertySuccessIndicator: invalid value: %d"), indValue );
       
  3323                 err = KErrGeneral;
       
  3324                 }
       
  3325             }
       
  3326         if ( !err )
       
  3327             {
       
  3328             TInt indCount( iTestCases->GetSetPropertySuccessIndicatorCount() );
       
  3329             if ( expectedIndCount >= 0 && expectedIndCount != indCount )
       
  3330                 {
       
  3331                 RDebug::Print(  _L("CSensrvTest::CheckListenedSetPropertySuccessIndicator: invalid count: %d"), indCount );
       
  3332                 err = KErrGeneral;
       
  3333                 }
       
  3334             }
       
  3335         }
       
  3336     iTestCases->ClearSetPropertySuccessIndicator();
       
  3337     return err;
       
  3338     }
       
  3339 
       
  3340 
       
  3341 // -----------------------------------------------------------------------------
       
  3342 // CSensrvTest::CheckServerAlive
       
  3343 // -----------------------------------------------------------------------------
       
  3344 //
       
  3345 TInt CSensrvTest::CheckServerAlive( CStifItemParser& aItem )
       
  3346 	{
       
  3347     // Print to UI
       
  3348 	RDebug::Print( _L("CSensrvTest::CheckServerAlive") );
       
  3349     TInt expectedIndValue( 0 );
       
  3350     TInt err( aItem.GetNextInt( expectedIndValue ) );
       
  3351     if( err )
       
  3352         {
       
  3353         RDebug::Print(  _L("CSensrvTest::CheckServerAlive: invalid value: %d"), err );
       
  3354         }
       
  3355     else
       
  3356     	{
       
  3357 		RSensrvTestClient test;
       
  3358 		TInt processExists = test.Connect() == KErrNone;
       
  3359 		if( expectedIndValue != processExists)
       
  3360 			{
       
  3361 			err = KErrGeneral;
       
  3362 			}
       
  3363 		test.Close();
       
  3364     	}
       
  3365     return err;
       
  3366 	}
       
  3367 
       
  3368 
       
  3369 // -----------------------------------------------------------------------------
       
  3370 // CSensrvTest::?member_function
       
  3371 // ?implementation_description
       
  3372 // (other items were commented in a header).
       
  3373 // -----------------------------------------------------------------------------
       
  3374 //
       
  3375 /*
       
  3376 TInt CSensrvTest::?member_function( CStifItemParser& aItem )
       
  3377    {
       
  3378     // Print to UI
       
  3379     _LIT( KSensrvTest, "?" );
       
  3380     _LIT( KTestcase, "?" );
       
  3381     TestModuleIf().Printf( 0, KSensrvTest, KTestcase );
       
  3382     // Print to log file
       
  3383     RDebug::Print( KTestcase );
       
  3384 
       
  3385 
       
  3386     return KErrNone;
       
  3387    }
       
  3388 */
       
  3389 
       
  3390 // ========================== OTHER EXPORTED FUNCTIONS =========================
       
  3391 // None
       
  3392 
       
  3393 //  End of File