keepalive/flextimer/test/testflextimer/inc/testflexperiodic.h
author hgs
Mon, 24 May 2010 20:51:35 +0300
changeset 32 5c4486441ae6
permissions -rw-r--r--
201021
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* ============================================================================
hgs
parents:
diff changeset
     3
*  Name        : testflexperiodic.h
hgs
parents:
diff changeset
     4
*  Part of     : src / testflextimer
hgs
parents:
diff changeset
     5
*  Description : STIF test cases for CFlexPeriodic timer.
hgs
parents:
diff changeset
     6
*  Version     : %version: 1 %
hgs
parents:
diff changeset
     7
*
hgs
parents:
diff changeset
     8
*  Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     9
*  All rights reserved.
hgs
parents:
diff changeset
    10
*  This component and the accompanying materials are made available
hgs
parents:
diff changeset
    11
*  under the terms of the License "Eclipse Public License v1.0"
hgs
parents:
diff changeset
    12
*  which accompanies this distribution, and is available
hgs
parents:
diff changeset
    13
*  at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
    14
*
hgs
parents:
diff changeset
    15
*  Initial Contributors:
hgs
parents:
diff changeset
    16
*  Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    17
*
hgs
parents:
diff changeset
    18
*  Contributors:
hgs
parents:
diff changeset
    19
*  Nokia Corporation
hgs
parents:
diff changeset
    20
* ============================================================================
hgs
parents:
diff changeset
    21
* Template version: 4.2
hgs
parents:
diff changeset
    22
*/
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
#ifndef TESTFLEXPERIODIC_H
hgs
parents:
diff changeset
    25
#define TESTFLEXPERIODIC_H
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
#include <e32base.h>
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    30
class CFlexPeriodic;
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
/**
hgs
parents:
diff changeset
    33
 *  STIF test cases for CFlexPeriodic class.
hgs
parents:
diff changeset
    34
 *  This class is only a container for STIF test cases - it should NOT be
hgs
parents:
diff changeset
    35
 *  instantiated, just call the static functions.
hgs
parents:
diff changeset
    36
 *
hgs
parents:
diff changeset
    37
 *  @lib testflextimer.lib
hgs
parents:
diff changeset
    38
 *  @since TB10.1
hgs
parents:
diff changeset
    39
 */
hgs
parents:
diff changeset
    40
NONSHARABLE_CLASS( CTestFlexPeriodic ) : public CBase
hgs
parents:
diff changeset
    41
    {
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
/**
hgs
parents:
diff changeset
    44
 * Data for restarting timer in callback function.
hgs
parents:
diff changeset
    45
 */
hgs
parents:
diff changeset
    46
struct TRestartInfo
hgs
parents:
diff changeset
    47
    {
hgs
parents:
diff changeset
    48
    CFlexPeriodic* iTimer;                      ///< Pointer to the timer
hgs
parents:
diff changeset
    49
    TInt iFirstTicksLeft;                       ///< Number of times the 1st timer settings are run
hgs
parents:
diff changeset
    50
    RArray<TTime>* iFirstTimestamps;            ///< Timestamps for the 1st timer settings
hgs
parents:
diff changeset
    51
    RArray<TTime>* iSecondTimestamps;           ///< Timestamps for the 2nd timer settings
hgs
parents:
diff changeset
    52
    TTimeIntervalMicroSeconds iSecondInterval;  ///< Interval for the 2nd timer settings
hgs
parents:
diff changeset
    53
    };
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
/**
hgs
parents:
diff changeset
    56
 * Data for CFlexPeriodic::Configure() tests
hgs
parents:
diff changeset
    57
 */
hgs
parents:
diff changeset
    58
struct TConfigureInfo
hgs
parents:
diff changeset
    59
    {
hgs
parents:
diff changeset
    60
    CFlexPeriodic* iTimer;   ///< Pointer to the timer under testing
hgs
parents:
diff changeset
    61
    TInt iDelayWindow;       ///< value for delay window to be set
hgs
parents:
diff changeset
    62
    TInt iIntervalWindow;    ///< value for interval window to be set
hgs
parents:
diff changeset
    63
    TInt iConfigResult32;    ///< Result of configure(32 bit)
hgs
parents:
diff changeset
    64
    TInt iConfigResult64;    ///< Result of configure(64 bit)
hgs
parents:
diff changeset
    65
    };
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
/**
hgs
parents:
diff changeset
    68
 * Data for running a test case in own thread
hgs
parents:
diff changeset
    69
 */
hgs
parents:
diff changeset
    70
struct TTestCaseArguments
hgs
parents:
diff changeset
    71
    {
hgs
parents:
diff changeset
    72
    TInt (*iTestFunction)( TTestResult&, CTestFlexTimer* ); ///< Function pointer to the test case to be run
hgs
parents:
diff changeset
    73
    TTestResult& iResult;                                   ///< The result of the test (argument for the test case)
hgs
parents:
diff changeset
    74
    CTestFlexTimer* iCallback;                              ///< Pointer to the STIF test class (argument for the test case)
hgs
parents:
diff changeset
    75
    };
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
public:
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
    /**
hgs
parents:
diff changeset
    80
    * Destructor.
hgs
parents:
diff changeset
    81
    */
hgs
parents:
diff changeset
    82
    virtual ~CTestFlexPeriodic();
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
    /**
hgs
parents:
diff changeset
    85
    * @brief Create and expire CFlexPeriodic timer.
hgs
parents:
diff changeset
    86
    * 
hgs
parents:
diff changeset
    87
    * Create and start one CFlexPeriodic timer with 1 sec delay and interval 
hgs
parents:
diff changeset
    88
    * wait for 5 secs. Check that the timer has been expired at correct times.
hgs
parents:
diff changeset
    89
    * 
hgs
parents:
diff changeset
    90
    * Timer expiration times (sec):
hgs
parents:
diff changeset
    91
    * 1, 2, 3, 4, ...
hgs
parents:
diff changeset
    92
    * 
hgs
parents:
diff changeset
    93
    * Tests:
hgs
parents:
diff changeset
    94
    * - CFlexPeriodic::NewL()
hgs
parents:
diff changeset
    95
    * - CFlexPeriodic::Start() 32-bit
hgs
parents:
diff changeset
    96
    * - CFlexPeriodic::Cancel()
hgs
parents:
diff changeset
    97
    * - CFlexPeriodic::~CFlexPeriodic()
hgs
parents:
diff changeset
    98
    * - Expiration of CFlexPeriodic timers
hgs
parents:
diff changeset
    99
    *
hgs
parents:
diff changeset
   100
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   101
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   102
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   103
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   104
    */
hgs
parents:
diff changeset
   105
    static TInt StartOneTimerL( TTestResult& aResult, 
hgs
parents:
diff changeset
   106
                                CTestFlexTimer* aCallback );
hgs
parents:
diff changeset
   107
    
hgs
parents:
diff changeset
   108
    /**
hgs
parents:
diff changeset
   109
    * @brief Create and expire CFlexPeriodic timer with Error CB.
hgs
parents:
diff changeset
   110
    * 
hgs
parents:
diff changeset
   111
    * Create and start one CFlexPeriodic timer with 1 sec delay and interval 
hgs
parents:
diff changeset
   112
    * wait for 5 secs. Give timer also Error CB argument.
hgs
parents:
diff changeset
   113
    * Check that the timer has been expired at correct times.
hgs
parents:
diff changeset
   114
    * If callback gets called case panics.
hgs
parents:
diff changeset
   115
    * 
hgs
parents:
diff changeset
   116
    * Timer expiration times (sec):
hgs
parents:
diff changeset
   117
    * 1, 2, 3, 4, ...
hgs
parents:
diff changeset
   118
    * 
hgs
parents:
diff changeset
   119
    * Tests:
hgs
parents:
diff changeset
   120
    * - CFlexPeriodic::NewL()
hgs
parents:
diff changeset
   121
    * - CFlexPeriodic::Start() 32-bit
hgs
parents:
diff changeset
   122
    * - CFlexPeriodic::Cancel()
hgs
parents:
diff changeset
   123
    * - CFlexPeriodic::~CFlexPeriodic()
hgs
parents:
diff changeset
   124
    * - Expiration of CFlexPeriodic timers
hgs
parents:
diff changeset
   125
    *
hgs
parents:
diff changeset
   126
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   127
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   128
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   129
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   130
    */
hgs
parents:
diff changeset
   131
    static TInt StartOneTimerWithErrorCbL( TTestResult& aResult, 
hgs
parents:
diff changeset
   132
                                CTestFlexTimer* aCallback );
hgs
parents:
diff changeset
   133
    
hgs
parents:
diff changeset
   134
    /**
hgs
parents:
diff changeset
   135
    * @brief Restart CFlexPeriodic in callback function. 
hgs
parents:
diff changeset
   136
    *
hgs
parents:
diff changeset
   137
    * Start a periodic timer with 1 sec delay and interval.
hgs
parents:
diff changeset
   138
    *
hgs
parents:
diff changeset
   139
    * After 2 expiration cancel and start the timer in its callback function
hgs
parents:
diff changeset
   140
    * with 2 secs delay and interval.
hgs
parents:
diff changeset
   141
    * 
hgs
parents:
diff changeset
   142
    * Timer expiration times (sec):
hgs
parents:
diff changeset
   143
    * 1, 2, 4, 6, 8, ...
hgs
parents:
diff changeset
   144
    * 
hgs
parents:
diff changeset
   145
    * Tests:
hgs
parents:
diff changeset
   146
    * - CFlexPeriodic::NewL()
hgs
parents:
diff changeset
   147
    * - CFlexPeriodic::Start() 64-bit
hgs
parents:
diff changeset
   148
    * - CFlexPeriodic::Cancel()
hgs
parents:
diff changeset
   149
    * - CFlexPeriodic::~CFlexPeriodic()
hgs
parents:
diff changeset
   150
    * - Expiration of CFlexPeriodic timers
hgs
parents:
diff changeset
   151
    * - Cancelling and starting timer in callback function
hgs
parents:
diff changeset
   152
    * 
hgs
parents:
diff changeset
   153
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   154
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   155
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   156
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   157
    */
hgs
parents:
diff changeset
   158
    static TInt CallbackRestartL( TTestResult& aResult, 
hgs
parents:
diff changeset
   159
                                  CTestFlexTimer* aCallback ); 
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
    /**
hgs
parents:
diff changeset
   162
    * @brief Configure window sizes, 32 bit
hgs
parents:
diff changeset
   163
    * 
hgs
parents:
diff changeset
   164
    * Start 2 timers:
hgs
parents:
diff changeset
   165
    * T1:
hgs
parents:
diff changeset
   166
    * - delay       3.0 sec, window 0.0 sec
hgs
parents:
diff changeset
   167
    * - interval    2.0 sec, window 1.5 sec
hgs
parents:
diff changeset
   168
    * T2:
hgs
parents:
diff changeset
   169
    * - delay       3.5 sec, window 1.5 sec
hgs
parents:
diff changeset
   170
    * - interval    1.0 sec, window 0.0 sec
hgs
parents:
diff changeset
   171
    *
hgs
parents:
diff changeset
   172
    * Both timers shoud expire at (sec)
hgs
parents:
diff changeset
   173
    * 3.0, 4.0, 5.0, 6.0, ...
hgs
parents:
diff changeset
   174
    * 
hgs
parents:
diff changeset
   175
    * Functionality of delay window is tested in sec 3.0 expiration and
hgs
parents:
diff changeset
   176
    * functionality of interval window is tested in other expirations.
hgs
parents:
diff changeset
   177
    *
hgs
parents:
diff changeset
   178
    * Tests:
hgs
parents:
diff changeset
   179
    * - CFlexPeriodic::NewL()
hgs
parents:
diff changeset
   180
    * - CFlexPeriodic::Configure() 32-bit
hgs
parents:
diff changeset
   181
    * - CFlexPeriodic::Start() 32-bit
hgs
parents:
diff changeset
   182
    * - CFlexPeriodic::Cancel()
hgs
parents:
diff changeset
   183
    * - CFlexPeriodic::~CFlexPeriodic()
hgs
parents:
diff changeset
   184
    * - Expiration of CFlexPeriodic timers
hgs
parents:
diff changeset
   185
    * - Delay
hgs
parents:
diff changeset
   186
    * - Interval
hgs
parents:
diff changeset
   187
    * - Delay window
hgs
parents:
diff changeset
   188
    * - Interval window  
hgs
parents:
diff changeset
   189
    * 
hgs
parents:
diff changeset
   190
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   191
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   192
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   193
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   194
    */
hgs
parents:
diff changeset
   195
    static TInt ConfigureWindow32L( TTestResult& aResult,
hgs
parents:
diff changeset
   196
                                    CTestFlexTimer* aCallback );
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
    /**
hgs
parents:
diff changeset
   199
    * @brief Configure window sizes, 64 bit
hgs
parents:
diff changeset
   200
    * 
hgs
parents:
diff changeset
   201
    * @see ConfigureWindow32L for test setup.
hgs
parents:
diff changeset
   202
    * 
hgs
parents:
diff changeset
   203
    * Tests:
hgs
parents:
diff changeset
   204
    * - CFlexPeriodic::NewL()
hgs
parents:
diff changeset
   205
    * - CFlexPeriodic::Configure() 64-bit
hgs
parents:
diff changeset
   206
    * - CFlexPeriodic::Start() 64-bit
hgs
parents:
diff changeset
   207
    * - CFlexPeriodic::Cancel()
hgs
parents:
diff changeset
   208
    * - CFlexPeriodic::~CFlexPeriodic()
hgs
parents:
diff changeset
   209
    * - Expiration of CFlexPeriodic timers
hgs
parents:
diff changeset
   210
    * - Delay
hgs
parents:
diff changeset
   211
    * - Interval
hgs
parents:
diff changeset
   212
    * - Delay window
hgs
parents:
diff changeset
   213
    * - Interval window  
hgs
parents:
diff changeset
   214
    * 
hgs
parents:
diff changeset
   215
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   216
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   217
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   218
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   219
    */
hgs
parents:
diff changeset
   220
    static TInt ConfigureWindow64L( TTestResult& aResult,
hgs
parents:
diff changeset
   221
                                    CTestFlexTimer* aCallback );
hgs
parents:
diff changeset
   222
hgs
parents:
diff changeset
   223
    /**
hgs
parents:
diff changeset
   224
    * @brief Configure window sizes, 32 bit and 64 bit
hgs
parents:
diff changeset
   225
    * 
hgs
parents:
diff changeset
   226
    * @see ConfigureWindow32L for test setup.
hgs
parents:
diff changeset
   227
    * 
hgs
parents:
diff changeset
   228
    * Tests:
hgs
parents:
diff changeset
   229
    * - CFlexPeriodic::NewL()
hgs
parents:
diff changeset
   230
    * - CFlexPeriodic::Configure() 32-bit
hgs
parents:
diff changeset
   231
    * - CFlexPeriodic::Configure() 64-bit
hgs
parents:
diff changeset
   232
    * - CFlexPeriodic::Start() 32-bit
hgs
parents:
diff changeset
   233
    * - CFlexPeriodic::Start() 64-bit
hgs
parents:
diff changeset
   234
    * - CFlexPeriodic::Cancel()
hgs
parents:
diff changeset
   235
    * - CFlexPeriodic::~CFlexPeriodic()
hgs
parents:
diff changeset
   236
    * - Expiration of CFlexPeriodic timers
hgs
parents:
diff changeset
   237
    * - Delay
hgs
parents:
diff changeset
   238
    * - Interval
hgs
parents:
diff changeset
   239
    * - Delay window
hgs
parents:
diff changeset
   240
    * - Interval window  
hgs
parents:
diff changeset
   241
    * 
hgs
parents:
diff changeset
   242
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   243
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   244
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   245
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   246
    */
hgs
parents:
diff changeset
   247
    static TInt ConfigureWindowMixL( TTestResult& aResult,
hgs
parents:
diff changeset
   248
                                     CTestFlexTimer* aCallback );
hgs
parents:
diff changeset
   249
hgs
parents:
diff changeset
   250
    /**
hgs
parents:
diff changeset
   251
    * @brief Configure timer after it has been started.
hgs
parents:
diff changeset
   252
    * 
hgs
parents:
diff changeset
   253
    * Start two timers:
hgs
parents:
diff changeset
   254
    * T1:
hgs
parents:
diff changeset
   255
    * - delay 1 microsecond, window 0
hgs
parents:
diff changeset
   256
    * - interval 1 sec, window 0
hgs
parents:
diff changeset
   257
    * 
hgs
parents:
diff changeset
   258
    * T2:
hgs
parents:
diff changeset
   259
    * - delay 2 sec, default window
hgs
parents:
diff changeset
   260
    * - interval 2 sec, default window
hgs
parents:
diff changeset
   261
    * 
hgs
parents:
diff changeset
   262
    * Try to configure T2 with 1.5 sec delay and interval windows by both
hgs
parents:
diff changeset
   263
    * 32 bit and 64 bit Configure(). Check that configure returns KErrInUse
hgs
parents:
diff changeset
   264
    * and it has not changed the window sizes. The timer expirations should be
hgs
parents:
diff changeset
   265
    * T1: 1, 2, 3, 4, 5, 6, 7, 8, ...
hgs
parents:
diff changeset
   266
    * T2:    2,    4,    6,    8, ...  
hgs
parents:
diff changeset
   267
    * 
hgs
parents:
diff changeset
   268
    * Cancel the timer T2 and set its callback function to call Configure() 
hgs
parents:
diff changeset
   269
    * (32 bit and 64 bit versions) while the timer is running. Check that both
hgs
parents:
diff changeset
   270
    * configurations return KErrInUse
hgs
parents:
diff changeset
   271
    *
hgs
parents:
diff changeset
   272
    * Cancel timer T2 and configure its delay and interval windows to 1.5 sec.
hgs
parents:
diff changeset
   273
    * Let the timer(s) run a while and check that the timer expirations are:
hgs
parents:
diff changeset
   274
    * T1: ..., 10, 11, 12, 13, ...
hgs
parents:
diff changeset
   275
    * T2: ..., 10, 11, 12, 13, ...
hgs
parents:
diff changeset
   276
    * 
hgs
parents:
diff changeset
   277
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   278
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   279
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   280
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   281
    */
hgs
parents:
diff changeset
   282
    static TInt ConfigureAfterStartL( TTestResult& aResult,
hgs
parents:
diff changeset
   283
                                      CTestFlexTimer* aCallback );
hgs
parents:
diff changeset
   284
hgs
parents:
diff changeset
   285
    /**
hgs
parents:
diff changeset
   286
    * @brief Start a running timer.
hgs
parents:
diff changeset
   287
    * 
hgs
parents:
diff changeset
   288
    * Test should panic with E32USER-CBase 42 (attempt to active CActive when 
hgs
parents:
diff changeset
   289
    * a request is still outstanding).
hgs
parents:
diff changeset
   290
    *
hgs
parents:
diff changeset
   291
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   292
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   293
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   294
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   295
    */
hgs
parents:
diff changeset
   296
    static TInt StartAfterStartL( TTestResult& aResult,
hgs
parents:
diff changeset
   297
                                  CTestFlexTimer* aCallback );
hgs
parents:
diff changeset
   298
hgs
parents:
diff changeset
   299
    /**
hgs
parents:
diff changeset
   300
    * @brief Start a running timer in its callback function.
hgs
parents:
diff changeset
   301
    * 
hgs
parents:
diff changeset
   302
    * Test should panic with E32USER-CBase 42 (attempt to active CActive when 
hgs
parents:
diff changeset
   303
    * a request is still outstanding).
hgs
parents:
diff changeset
   304
    * 
hgs
parents:
diff changeset
   305
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   306
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   307
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   308
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   309
    */
hgs
parents:
diff changeset
   310
    static TInt StartInCallbackL( TTestResult& aResult,
hgs
parents:
diff changeset
   311
                                  CTestFlexTimer* aCallback );
hgs
parents:
diff changeset
   312
hgs
parents:
diff changeset
   313
    /**
hgs
parents:
diff changeset
   314
    * Start timer with negative delay (32 bit).
hgs
parents:
diff changeset
   315
    * 
hgs
parents:
diff changeset
   316
    * Start should panic with CFlexPeriodic 6 (EFlexPeriodicDelayLessThanZero)
hgs
parents:
diff changeset
   317
    * 
hgs
parents:
diff changeset
   318
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   319
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   320
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   321
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   322
    */
hgs
parents:
diff changeset
   323
    static TInt StartWithNegativeDelay32L( TTestResult& aResult, 
hgs
parents:
diff changeset
   324
                                           CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   325
hgs
parents:
diff changeset
   326
    /**
hgs
parents:
diff changeset
   327
    * @brief Start timer with zero interval (32 bit).
hgs
parents:
diff changeset
   328
    * 
hgs
parents:
diff changeset
   329
    * Start should panic with CFlexPeriodic 7 (EFlexPeriodicIntervalTooSmall)
hgs
parents:
diff changeset
   330
    * 
hgs
parents:
diff changeset
   331
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   332
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   333
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   334
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   335
    */
hgs
parents:
diff changeset
   336
    static TInt StartWithZeroInterval32L( TTestResult& aResult, 
hgs
parents:
diff changeset
   337
                                          CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   338
    
hgs
parents:
diff changeset
   339
    /**
hgs
parents:
diff changeset
   340
    * @brief Start timer with negative interval (32 bit).
hgs
parents:
diff changeset
   341
    * 
hgs
parents:
diff changeset
   342
    * Start should panic with CFlexPeriodic 7 (EFlexPeriodicIntervalTooSmall)
hgs
parents:
diff changeset
   343
    * 
hgs
parents:
diff changeset
   344
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   345
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   346
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   347
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   348
    */
hgs
parents:
diff changeset
   349
    static TInt StartWithNegativeInterval32L( TTestResult& aResult, 
hgs
parents:
diff changeset
   350
                                              CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   351
hgs
parents:
diff changeset
   352
    /**
hgs
parents:
diff changeset
   353
    * @brief Start timer with negative delay (64 bit).
hgs
parents:
diff changeset
   354
    * 
hgs
parents:
diff changeset
   355
    * Start should panic with CFlexPeriodic 6 (EFlexPeriodicDelayLessThanZero)
hgs
parents:
diff changeset
   356
    * 
hgs
parents:
diff changeset
   357
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   358
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   359
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   360
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   361
    */
hgs
parents:
diff changeset
   362
    static TInt StartWithNegativeDelay64L( TTestResult& aResult, 
hgs
parents:
diff changeset
   363
                                          CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
    /**
hgs
parents:
diff changeset
   366
    * @brief Start timer with zero interval (64 bit).
hgs
parents:
diff changeset
   367
    * 
hgs
parents:
diff changeset
   368
    * Start should panic with CFlexPeriodic 7 (EFlexPeriodicIntervalTooSmall)
hgs
parents:
diff changeset
   369
    * 
hgs
parents:
diff changeset
   370
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   371
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   372
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   373
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   374
    */
hgs
parents:
diff changeset
   375
    static TInt StartWithZeroInterval64L( TTestResult& aResult, 
hgs
parents:
diff changeset
   376
                                          CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   377
hgs
parents:
diff changeset
   378
    /**
hgs
parents:
diff changeset
   379
    * @brief Start timer with negative interval (64 bit).
hgs
parents:
diff changeset
   380
    * 
hgs
parents:
diff changeset
   381
    * Start should panic with CFlexPeriodic 7 (EFlexPeriodicIntervalTooSmall)
hgs
parents:
diff changeset
   382
    * 
hgs
parents:
diff changeset
   383
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   384
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   385
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   386
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   387
    */
hgs
parents:
diff changeset
   388
    static TInt StartWithNegativeInterval64L( TTestResult& aResult, 
hgs
parents:
diff changeset
   389
                                              CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   390
hgs
parents:
diff changeset
   391
    /**
hgs
parents:
diff changeset
   392
    * @brief Configure timer with negative delay window (32 bit).
hgs
parents:
diff changeset
   393
    * 
hgs
parents:
diff changeset
   394
    * Configure should panic with CFlexPeriodic 9 
hgs
parents:
diff changeset
   395
    * (EFlexPeriodicIntervalWindowLessThanZero)
hgs
parents:
diff changeset
   396
    * 
hgs
parents:
diff changeset
   397
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   398
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   399
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   400
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   401
    */
hgs
parents:
diff changeset
   402
    static TInt ConfigureWithNegativeDelayWindow32L( 
hgs
parents:
diff changeset
   403
        TTestResult& aResult, 
hgs
parents:
diff changeset
   404
        CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   405
hgs
parents:
diff changeset
   406
    /**
hgs
parents:
diff changeset
   407
    * @brief Configure timer with negative interval window (32 bit).
hgs
parents:
diff changeset
   408
    * 
hgs
parents:
diff changeset
   409
    * Configure should panic with CFlexPeriodic 8 
hgs
parents:
diff changeset
   410
    * (EFlexPeriodicDelayWindowLessThanZero)
hgs
parents:
diff changeset
   411
    * 
hgs
parents:
diff changeset
   412
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   413
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   414
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   415
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   416
    */
hgs
parents:
diff changeset
   417
    static TInt ConfigureWithNegativeIntervalWindow32L( 
hgs
parents:
diff changeset
   418
        TTestResult& aResult, 
hgs
parents:
diff changeset
   419
        CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   420
hgs
parents:
diff changeset
   421
    /**
hgs
parents:
diff changeset
   422
    * @brief Configure timer with negative delay window (64 bit).
hgs
parents:
diff changeset
   423
    * 
hgs
parents:
diff changeset
   424
    * Configure should panic with CFlexPeriodic 9 
hgs
parents:
diff changeset
   425
    * (EFlexPeriodicIntervalWindowLessThanZero)
hgs
parents:
diff changeset
   426
    * 
hgs
parents:
diff changeset
   427
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   428
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   429
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   430
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   431
    */
hgs
parents:
diff changeset
   432
    static TInt ConfigureWithNegativeDelayWindow64L( 
hgs
parents:
diff changeset
   433
        TTestResult& aResult, 
hgs
parents:
diff changeset
   434
        CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   435
hgs
parents:
diff changeset
   436
    /**
hgs
parents:
diff changeset
   437
    * @brief Configure timer with negative interval window (64 bit).
hgs
parents:
diff changeset
   438
    * 
hgs
parents:
diff changeset
   439
    * Configure should panic with CFlexPeriodic 8 
hgs
parents:
diff changeset
   440
    * (EFlexPeriodicDelayWindowLessThanZero)
hgs
parents:
diff changeset
   441
    * 
hgs
parents:
diff changeset
   442
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   443
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   444
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   445
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   446
    */
hgs
parents:
diff changeset
   447
    static TInt ConfigureWithNegativeIntervalWindow64L( 
hgs
parents:
diff changeset
   448
        TTestResult& aResult, 
hgs
parents:
diff changeset
   449
        CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   450
hgs
parents:
diff changeset
   451
    
hgs
parents:
diff changeset
   452
    /**
hgs
parents:
diff changeset
   453
    * @brief Test timer start allowed value range.
hgs
parents:
diff changeset
   454
    * 
hgs
parents:
diff changeset
   455
    * Start timers with following parameters:
hgs
parents:
diff changeset
   456
    * 
hgs
parents:
diff changeset
   457
    * T1:
hgs
parents:
diff changeset
   458
    * - Configure (32 bit): delay window 1 sec, interval window 1 sec
hgs
parents:
diff changeset
   459
    * - Start (32 bit): delay 0 microseconds, interval 1 sec
hgs
parents:
diff changeset
   460
    * 
hgs
parents:
diff changeset
   461
    * T2:
hgs
parents:
diff changeset
   462
    * - Configure (32 bit): delay window 1 sec, interval window 1 sec
hgs
parents:
diff changeset
   463
    * - Start (32 bit): delay 0x7FFFFF microseconds, interval 1 sec
hgs
parents:
diff changeset
   464
    * 
hgs
parents:
diff changeset
   465
    * T3:
hgs
parents:
diff changeset
   466
    * - Configure (32 bit): delay window 1 sec, interval window 1 sec
hgs
parents:
diff changeset
   467
    * - Start (32 bit): delay 1 sec, interval 0 microseconds
hgs
parents:
diff changeset
   468
    * 
hgs
parents:
diff changeset
   469
    * T4:
hgs
parents:
diff changeset
   470
    * - Configure (32 bit): delay window 1 sec, interval window 1 sec
hgs
parents:
diff changeset
   471
    * - Start (32 bit): delay 1 sec, interval 0x7FFFFF microseconds
hgs
parents:
diff changeset
   472
    *
hgs
parents:
diff changeset
   473
    * T5:
hgs
parents:
diff changeset
   474
    * - Configure (64 bit): delay window 1 sec, interval window 1 sec
hgs
parents:
diff changeset
   475
    * - Start (64 bit): delay 0 microseconds, interval 1 sec
hgs
parents:
diff changeset
   476
    * 
hgs
parents:
diff changeset
   477
    * T6:
hgs
parents:
diff changeset
   478
    * - Configure (64 bit): delay window 1 sec, interval window 1 sec
hgs
parents:
diff changeset
   479
    * - Start (64 bit): delay 1 year, interval 1 sec
hgs
parents:
diff changeset
   480
    * 
hgs
parents:
diff changeset
   481
    * T7:
hgs
parents:
diff changeset
   482
    * - Configure (64 bit): delay window 1 sec, interval window 1 sec
hgs
parents:
diff changeset
   483
    * - Start (64 bit): delay 1 sec, interval 0 microseconds
hgs
parents:
diff changeset
   484
    * 
hgs
parents:
diff changeset
   485
    * T8:
hgs
parents:
diff changeset
   486
    * - Configure (64 bit): delay window 1 sec, interval window 1 sec
hgs
parents:
diff changeset
   487
    * - Start (64 bit): delay 1 sec, interval 1 year
hgs
parents:
diff changeset
   488
    *
hgs
parents:
diff changeset
   489
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   490
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   491
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   492
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   493
    */
hgs
parents:
diff changeset
   494
    static TInt StartWithMinAndMaxL( 
hgs
parents:
diff changeset
   495
        TTestResult& aResult, 
hgs
parents:
diff changeset
   496
        CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   497
hgs
parents:
diff changeset
   498
    
hgs
parents:
diff changeset
   499
    /**
hgs
parents:
diff changeset
   500
    * @brief Start timer with maximum delay (64 bit), 0x7FFFFFFFFFFFFFFF.
hgs
parents:
diff changeset
   501
    * 
hgs
parents:
diff changeset
   502
    * Start should panic with  CFlexPeriodic 24 
hgs
parents:
diff changeset
   503
    * (EFlexTimerServerIllegalTimerValue)
hgs
parents:
diff changeset
   504
    * 
hgs
parents:
diff changeset
   505
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   506
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   507
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   508
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   509
    */
hgs
parents:
diff changeset
   510
    static TInt StartWithMaximumDelay64L( 
hgs
parents:
diff changeset
   511
        TTestResult& aResult, 
hgs
parents:
diff changeset
   512
        CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   513
hgs
parents:
diff changeset
   514
    /**
hgs
parents:
diff changeset
   515
    * @brief Start timer with maximum interval (64 bit), 0x7FFFFFFFFFFFFFFF.
hgs
parents:
diff changeset
   516
    * 
hgs
parents:
diff changeset
   517
    * Start should panic with  CFlexPeriodic 24 
hgs
parents:
diff changeset
   518
    * (EFlexTimerServerIllegalTimerValue)
hgs
parents:
diff changeset
   519
    * 
hgs
parents:
diff changeset
   520
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   521
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   522
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   523
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   524
    */
hgs
parents:
diff changeset
   525
    static TInt StartWithMaximumInterval64L( 
hgs
parents:
diff changeset
   526
        TTestResult& aResult, 
hgs
parents:
diff changeset
   527
        CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   528
    
hgs
parents:
diff changeset
   529
    /**
hgs
parents:
diff changeset
   530
    * @brief Start timer with NULL callback function (32 bit)
hgs
parents:
diff changeset
   531
    * 
hgs
parents:
diff changeset
   532
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   533
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   534
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   535
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   536
    */
hgs
parents:
diff changeset
   537
    static TInt StartWithNullCallBack32L(
hgs
parents:
diff changeset
   538
        TTestResult& aResult, 
hgs
parents:
diff changeset
   539
        CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   540
hgs
parents:
diff changeset
   541
    /**
hgs
parents:
diff changeset
   542
    * @brief Start timer with NULL callback function (64 bit)
hgs
parents:
diff changeset
   543
    * 
hgs
parents:
diff changeset
   544
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   545
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   546
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   547
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   548
    */
hgs
parents:
diff changeset
   549
    static TInt StartWithNullCallBack64L(
hgs
parents:
diff changeset
   550
        TTestResult& aResult, 
hgs
parents:
diff changeset
   551
        CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   552
hgs
parents:
diff changeset
   553
    
hgs
parents:
diff changeset
   554
    /**
hgs
parents:
diff changeset
   555
    * @brief Crash client with active periodic flexible timer.
hgs
parents:
diff changeset
   556
    * 
hgs
parents:
diff changeset
   557
    * Start two timers in separate threads:
hgs
parents:
diff changeset
   558
    * T1: delay 1 sec, interval 1 sec with default windows
hgs
parents:
diff changeset
   559
    * T2: delay 1 sec, interval 1 sec with default windows
hgs
parents:
diff changeset
   560
    * 
hgs
parents:
diff changeset
   561
    * Panic timer T1's thread after 3 sec.
hgs
parents:
diff changeset
   562
    * 
hgs
parents:
diff changeset
   563
    * Cancel T2 after 5 sec and check that it had worked correctly.
hgs
parents:
diff changeset
   564
    * Implementation of T2 uses test case StartOneTimerL().
hgs
parents:
diff changeset
   565
    * 
hgs
parents:
diff changeset
   566
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   567
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   568
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   569
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   570
    */
hgs
parents:
diff changeset
   571
    static TInt ClientCrashL(
hgs
parents:
diff changeset
   572
        TTestResult& aResult, 
hgs
parents:
diff changeset
   573
        CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   574
hgs
parents:
diff changeset
   575
private:
hgs
parents:
diff changeset
   576
hgs
parents:
diff changeset
   577
    /**
hgs
parents:
diff changeset
   578
    * Constructor is private to prevent instantiation of the class. 
hgs
parents:
diff changeset
   579
    */
hgs
parents:
diff changeset
   580
    CTestFlexPeriodic();
hgs
parents:
diff changeset
   581
hgs
parents:
diff changeset
   582
    /**
hgs
parents:
diff changeset
   583
     * Run active scheduler for given time.
hgs
parents:
diff changeset
   584
     * @param aPeriod Time to run active scheduler.
hgs
parents:
diff changeset
   585
     */
hgs
parents:
diff changeset
   586
    static void WaitL( TTimeIntervalMicroSeconds32 aPeriod );
hgs
parents:
diff changeset
   587
hgs
parents:
diff changeset
   588
    /**
hgs
parents:
diff changeset
   589
     * Stop the active scheduler. A function for TCallBack.
hgs
parents:
diff changeset
   590
     * @param aArgument Not used.
hgs
parents:
diff changeset
   591
     * @return KErrNone. Always.
hgs
parents:
diff changeset
   592
     */
hgs
parents:
diff changeset
   593
    static TInt StopScheduler( TAny* aArgument );
hgs
parents:
diff changeset
   594
hgs
parents:
diff changeset
   595
hgs
parents:
diff changeset
   596
    /**
hgs
parents:
diff changeset
   597
     * Do nothing. A function for TCallBack.
hgs
parents:
diff changeset
   598
     * @param aArgument Not used.
hgs
parents:
diff changeset
   599
     * @return KErrNone.
hgs
parents:
diff changeset
   600
     */
hgs
parents:
diff changeset
   601
    static TInt DoNothing( TAny* aArgument );
hgs
parents:
diff changeset
   602
    
hgs
parents:
diff changeset
   603
    /**
hgs
parents:
diff changeset
   604
     * Panics testcase if get called. A function for TCallBack.
hgs
parents:
diff changeset
   605
     * @param aArgument Not used.
hgs
parents:
diff changeset
   606
     * @return KErrNone.
hgs
parents:
diff changeset
   607
     */
hgs
parents:
diff changeset
   608
    static TInt PanicClient( TAny* aArgument );
hgs
parents:
diff changeset
   609
    
hgs
parents:
diff changeset
   610
    /**
hgs
parents:
diff changeset
   611
     * Add current time to given array. A function for TCallBack.
hgs
parents:
diff changeset
   612
     * @param aArgument Timestamp storage, type: RArray<TTime>*
hgs
parents:
diff changeset
   613
     * @return KErrNone.
hgs
parents:
diff changeset
   614
     */
hgs
parents:
diff changeset
   615
    static TInt AddTimestamp( TAny* aArgument );
hgs
parents:
diff changeset
   616
hgs
parents:
diff changeset
   617
    /**
hgs
parents:
diff changeset
   618
     * Restart the given timer. A function for TCallBack.
hgs
parents:
diff changeset
   619
     * @param aArgument The restart data, type: TRestartInfo*
hgs
parents:
diff changeset
   620
     * @return KErrNone.
hgs
parents:
diff changeset
   621
     */
hgs
parents:
diff changeset
   622
    static TInt RestartTimer( TAny* aArgument );
hgs
parents:
diff changeset
   623
hgs
parents:
diff changeset
   624
    /**
hgs
parents:
diff changeset
   625
     * Configure timer without cancellation in callback. A function for 
hgs
parents:
diff changeset
   626
     * TCallBack.
hgs
parents:
diff changeset
   627
     * @param aArgument The conficure data, type: TConfigureInfo*
hgs
parents:
diff changeset
   628
     * @return KErrNone.
hgs
parents:
diff changeset
   629
     */
hgs
parents:
diff changeset
   630
    static TInt ConfigureTimer( TAny* aArgument );
hgs
parents:
diff changeset
   631
hgs
parents:
diff changeset
   632
    /**
hgs
parents:
diff changeset
   633
     * Start timer without cancellation in callback. A function for TCallBack.
hgs
parents:
diff changeset
   634
     * @param aArgument The timer, type: CFlexPeriodic*
hgs
parents:
diff changeset
   635
     * @return KErrNone.
hgs
parents:
diff changeset
   636
     */
hgs
parents:
diff changeset
   637
    static TInt StartTimer( TAny* aArgument );
hgs
parents:
diff changeset
   638
hgs
parents:
diff changeset
   639
    /**
hgs
parents:
diff changeset
   640
     * Verify that the timestamps are expired at maximum window
hgs
parents:
diff changeset
   641
     * @param aTimestamps An array of times
hgs
parents:
diff changeset
   642
     * @param aDelay Requested delay of the 1st time
hgs
parents:
diff changeset
   643
     * @param aInterval Requested delay from the 2nd time
hgs
parents:
diff changeset
   644
     * @param aDelayWindow Time how much 1st time can be early
hgs
parents:
diff changeset
   645
     * @param aIntervalWindow Time how much times can be early from the 2nd time 
hgs
parents:
diff changeset
   646
     * @return ETrue if all timestamps are in given delay
hgs
parents:
diff changeset
   647
     */
hgs
parents:
diff changeset
   648
    static TBool AreTimestampsAtWindow( 
hgs
parents:
diff changeset
   649
        const RArray<TTime>& aTimestamps,
hgs
parents:
diff changeset
   650
        const TTimeIntervalMicroSeconds32& aDelay,
hgs
parents:
diff changeset
   651
        const TTimeIntervalMicroSeconds32& aInterval,
hgs
parents:
diff changeset
   652
        const TTimeIntervalMicroSeconds32& aDelayWindow,
hgs
parents:
diff changeset
   653
        const TTimeIntervalMicroSeconds32& aIntervalWindow );
hgs
parents:
diff changeset
   654
hgs
parents:
diff changeset
   655
    /**
hgs
parents:
diff changeset
   656
     * Verify that the timestamps are expired at maximum window
hgs
parents:
diff changeset
   657
     * @param aTimestamps An array of times
hgs
parents:
diff changeset
   658
     * @param aDelay Requested delay of the 1st time
hgs
parents:
diff changeset
   659
     * @param aInterval Requested delay from the 2nd time
hgs
parents:
diff changeset
   660
     * @param aDelayWindow Time how much 1st time can be early
hgs
parents:
diff changeset
   661
     * @param aIntervalWindow Time how much times can be early from the 2nd time 
hgs
parents:
diff changeset
   662
     * @return ETrue if all timestamps are in given delay
hgs
parents:
diff changeset
   663
     */
hgs
parents:
diff changeset
   664
    static TBool AreTimestampsAtWindow( 
hgs
parents:
diff changeset
   665
        const RArray<TTime>& aTimestamps,
hgs
parents:
diff changeset
   666
        const TTimeIntervalMicroSeconds& aDelay,
hgs
parents:
diff changeset
   667
        const TTimeIntervalMicroSeconds& aInterval,
hgs
parents:
diff changeset
   668
        const TTimeIntervalMicroSeconds& aDelayWindow,
hgs
parents:
diff changeset
   669
        const TTimeIntervalMicroSeconds& aIntervalWindow );
hgs
parents:
diff changeset
   670
hgs
parents:
diff changeset
   671
    /**
hgs
parents:
diff changeset
   672
     * Compare two arrays of timestamps.
hgs
parents:
diff changeset
   673
     * @param aLeft Array of timestamps to be compared
hgs
parents:
diff changeset
   674
     * @param aRight Array of timestamps to be compared
hgs
parents:
diff changeset
   675
     * @return ETrue if the arrays has the same timestamps, EFalse otherwise
hgs
parents:
diff changeset
   676
     */
hgs
parents:
diff changeset
   677
    static TBool AreTimestampsSame( 
hgs
parents:
diff changeset
   678
        const RArray<TTime>& aLeft, 
hgs
parents:
diff changeset
   679
        const RArray<TTime>& aRight );
hgs
parents:
diff changeset
   680
hgs
parents:
diff changeset
   681
    /**
hgs
parents:
diff changeset
   682
     * Parameter types of two timers are templated, so, 32 bit and 64 bit
hgs
parents:
diff changeset
   683
     * interfaces can be tested without duplicated source code.
hgs
parents:
diff changeset
   684
     * 
hgs
parents:
diff changeset
   685
     * Possible values for template are:
hgs
parents:
diff changeset
   686
     * - TTimeIntervalMicroSeconds
hgs
parents:
diff changeset
   687
     * - TTimeIntervalMicroSeconds32
hgs
parents:
diff changeset
   688
     */
hgs
parents:
diff changeset
   689
    template <class firstType, class secondType> 
hgs
parents:
diff changeset
   690
    static TInt ConfigureWindowL( TTestResult& aResult );
hgs
parents:
diff changeset
   691
hgs
parents:
diff changeset
   692
    /**
hgs
parents:
diff changeset
   693
     * Template function for NOK API test cases.
hgs
parents:
diff changeset
   694
     * 
hgs
parents:
diff changeset
   695
     * Types for CFlexPeriodic::Start() and CFlexPeriodic::Configure() are
hgs
parents:
diff changeset
   696
     * templated, so, 32 bit and 64 bin interfaces can be tested without
hgs
parents:
diff changeset
   697
     * duplicated code.
hgs
parents:
diff changeset
   698
     * 
hgs
parents:
diff changeset
   699
     * Function creates a flexible periodic timer, configures is, starts it.
hgs
parents:
diff changeset
   700
     * After one second the timer will be cancelled and destroyed.
hgs
parents:
diff changeset
   701
     * 
hgs
parents:
diff changeset
   702
     * Possible values for configureType and startType are:
hgs
parents:
diff changeset
   703
     * - TTimeIntervalMicroSeconds
hgs
parents:
diff changeset
   704
     * - TTimeIntervalMicroSeconds32
hgs
parents:
diff changeset
   705
     *
hgs
parents:
diff changeset
   706
     * @param aDelay Value for timer's delay in start
hgs
parents:
diff changeset
   707
     * @param aInterval Value for timer's interval in start
hgs
parents:
diff changeset
   708
     * @param aDelayWindow Value for timer's delay window in configure
hgs
parents:
diff changeset
   709
     * @param aIntervalWindow Value for timer's interval window in configure
hgs
parents:
diff changeset
   710
     */
hgs
parents:
diff changeset
   711
    template <class configureType, class startType>
hgs
parents:
diff changeset
   712
    static void ConfigureAndStartTimerL( 
hgs
parents:
diff changeset
   713
        RArray<TTime>& aTimestamps,
hgs
parents:
diff changeset
   714
        TInt64 aDelay,
hgs
parents:
diff changeset
   715
        TInt64 aInterval,
hgs
parents:
diff changeset
   716
        TInt64 aDelayWindow,
hgs
parents:
diff changeset
   717
        TInt64 aIntervalWindow );
hgs
parents:
diff changeset
   718
hgs
parents:
diff changeset
   719
    /**
hgs
parents:
diff changeset
   720
    * Start timer with NULL callback function
hgs
parents:
diff changeset
   721
    * 
hgs
parents:
diff changeset
   722
    * Possible values for startType are:
hgs
parents:
diff changeset
   723
    * - TTimeIntervalMicroSeconds
hgs
parents:
diff changeset
   724
    * - TTimeIntervalMicroSeconds32
hgs
parents:
diff changeset
   725
    * 
hgs
parents:
diff changeset
   726
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   727
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   728
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   729
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   730
    */
hgs
parents:
diff changeset
   731
    template <class startType>
hgs
parents:
diff changeset
   732
    static TInt StartWithNullCallBackL(
hgs
parents:
diff changeset
   733
        TTestResult& aResult, 
hgs
parents:
diff changeset
   734
        CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   735
    
hgs
parents:
diff changeset
   736
    /**
hgs
parents:
diff changeset
   737
    * Run test case in own thread
hgs
parents:
diff changeset
   738
    * 
hgs
parents:
diff changeset
   739
    * @param aThread The thread in which the test case is run
hgs
parents:
diff changeset
   740
    * @param aArguments Arguments for running a test case
hgs
parents:
diff changeset
   741
    * @return The status of execution of the test
hgs
parents:
diff changeset
   742
    */
hgs
parents:
diff changeset
   743
    static TInt RunInThread( 
hgs
parents:
diff changeset
   744
        RThread& aThread,
hgs
parents:
diff changeset
   745
        TTestCaseArguments& aArguments );
hgs
parents:
diff changeset
   746
hgs
parents:
diff changeset
   747
    /**
hgs
parents:
diff changeset
   748
    * Start running a thread. A function of format TThreadFunction.
hgs
parents:
diff changeset
   749
    * Create trap harness for the thread and call RunTestCaseL()
hgs
parents:
diff changeset
   750
    * 
hgs
parents:
diff changeset
   751
    * @param aArgument Test case data, type: TTestCaseArguments
hgs
parents:
diff changeset
   752
    * @return The status of running the thread
hgs
parents:
diff changeset
   753
    */
hgs
parents:
diff changeset
   754
    static TInt RunTestCase( TAny* aArgument );
hgs
parents:
diff changeset
   755
hgs
parents:
diff changeset
   756
    /**
hgs
parents:
diff changeset
   757
    * The second phase of start running a thread.
hgs
parents:
diff changeset
   758
    * Initialize scheduler and start the test case.
hgs
parents:
diff changeset
   759
    * 
hgs
parents:
diff changeset
   760
    * @param aArgument Test case data, type: TTestCaseArguments
hgs
parents:
diff changeset
   761
    */
hgs
parents:
diff changeset
   762
    static void RunTestCaseL( TAny* aArgument );
hgs
parents:
diff changeset
   763
hgs
parents:
diff changeset
   764
    /**
hgs
parents:
diff changeset
   765
    * Panic thread after a while. 
hgs
parents:
diff changeset
   766
    * @param aResult The result of the test.
hgs
parents:
diff changeset
   767
    * @param aCallback Pointer to the STIF test class
hgs
parents:
diff changeset
   768
    * @return The status of execution of the test. KErrNone if the test
hgs
parents:
diff changeset
   769
    *         was executed ok, any system wide errorcode otherwise.
hgs
parents:
diff changeset
   770
    */
hgs
parents:
diff changeset
   771
    static TInt DoPanicL( TTestResult& aResult, CTestFlexTimer*  aCallback  );
hgs
parents:
diff changeset
   772
hgs
parents:
diff changeset
   773
    };
hgs
parents:
diff changeset
   774
hgs
parents:
diff changeset
   775
#endif // TESTFLEXPERIODIC_H