uiacceltk/hitchcock/tsrc/alfperfapp/inc/alfperfapptestcase.h
author hgs
Wed, 03 Nov 2010 19:29:22 +0200
changeset 64 9f8c0686fb49
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
64
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  alfperfapp abstract test case class definition.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef C_ALFPERFAPPTESTCASE_H
hgs
parents:
diff changeset
    20
#define C_ALFPERFAPPTESTCASE_H
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <e32base.h>
hgs
parents:
diff changeset
    23
#include <eikenv.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include "alfperfappmodel.h"
hgs
parents:
diff changeset
    26
class CAlfEnv;
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
/**
hgs
parents:
diff changeset
    29
 * MAlfPerfAppTestCaseInterface class.
hgs
parents:
diff changeset
    30
 * It is interface from test case to execution environment. It allows
hgs
parents:
diff changeset
    31
 * test case to ask measurements to be performed.
hgs
parents:
diff changeset
    32
 */
hgs
parents:
diff changeset
    33
class MAlfPerfAppTestCaseInterface
hgs
parents:
diff changeset
    34
    {
hgs
parents:
diff changeset
    35
public:
hgs
parents:
diff changeset
    36
    
hgs
parents:
diff changeset
    37
    /**
hgs
parents:
diff changeset
    38
     * Asks execution enrivonment to perform measurements.
hgs
parents:
diff changeset
    39
     */
hgs
parents:
diff changeset
    40
    virtual void MeasureNow() = 0;
hgs
parents:
diff changeset
    41
    
hgs
parents:
diff changeset
    42
    };
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
/**
hgs
parents:
diff changeset
    45
 *  CAlfPerfAppTestCase class.
hgs
parents:
diff changeset
    46
 *  It's abstract class from which all concrete test cases needs to be derived
hgs
parents:
diff changeset
    47
 *  from.
hgs
parents:
diff changeset
    48
 *  Destruction of an instance of this type must complete ongoing requests.
hgs
parents:
diff changeset
    49
 */
hgs
parents:
diff changeset
    50
class CAlfPerfAppTestCase : public CBase
hgs
parents:
diff changeset
    51
    {
hgs
parents:
diff changeset
    52
public:
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
    /**
hgs
parents:
diff changeset
    55
     * Sets interface towards execution environment.
hgs
parents:
diff changeset
    56
     */
hgs
parents:
diff changeset
    57
    inline void SetInterface( MAlfPerfAppTestCaseInterface* aInterface );
hgs
parents:
diff changeset
    58
    
hgs
parents:
diff changeset
    59
    /**
hgs
parents:
diff changeset
    60
     * Starts set up phase.
hgs
parents:
diff changeset
    61
     * @param aEnv reference to alf environment instance.
hgs
parents:
diff changeset
    62
     * @param aVisibleArea visible area.
hgs
parents:
diff changeset
    63
     * @param aStatus request status that needs to be completed when
hgs
parents:
diff changeset
    64
     *                test case is ready to be executed.
hgs
parents:
diff changeset
    65
     */
hgs
parents:
diff changeset
    66
    virtual void SetupL( 
hgs
parents:
diff changeset
    67
        CAlfEnv& aEnv, 
hgs
parents:
diff changeset
    68
        const TRect& aVisibleArea, 
hgs
parents:
diff changeset
    69
        TRequestStatus& aStatus ) = 0;
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
    /**
hgs
parents:
diff changeset
    72
     * Starts test case execution.
hgs
parents:
diff changeset
    73
     * @param aStatus request status that needs to be completed when
hgs
parents:
diff changeset
    74
     *                execution is finished.
hgs
parents:
diff changeset
    75
     */
hgs
parents:
diff changeset
    76
    virtual void ExecuteL( TRequestStatus& aStatus ) = 0;
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
    /** 
hgs
parents:
diff changeset
    79
     * Tears down. 
hgs
parents:
diff changeset
    80
     */
hgs
parents:
diff changeset
    81
    virtual void TearDown() = 0;
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
    /**
hgs
parents:
diff changeset
    84
     * Handles visible area changes.
hgs
parents:
diff changeset
    85
     * @param aRect new visible area rect.
hgs
parents:
diff changeset
    86
     */
hgs
parents:
diff changeset
    87
    virtual void HandleVisibleAreaChange( const TRect& aRect ) = 0;
hgs
parents:
diff changeset
    88
    
hgs
parents:
diff changeset
    89
    /**
hgs
parents:
diff changeset
    90
     * Returns CaseID of this test case
hgs
parents:
diff changeset
    91
     */
hgs
parents:
diff changeset
    92
    virtual TInt CaseID() = 0;
hgs
parents:
diff changeset
    93
   
hgs
parents:
diff changeset
    94
    /*
hgs
parents:
diff changeset
    95
     * Used to get test case specific results.
hgs
parents:
diff changeset
    96
     * Default definition just returns empty TTestCaseSpecificResultText
hgs
parents:
diff changeset
    97
     * This should be reimplemented in actual test case classes if case specific results are needed.
hgs
parents:
diff changeset
    98
     * Notes:
hgs
parents:
diff changeset
    99
     *  - Latest non-zero returning value of this is shown in DisplayResults. All are still
hgs
parents:
diff changeset
   100
     *    recorded to file. 
hgs
parents:
diff changeset
   101
     */
hgs
parents:
diff changeset
   102
    virtual TTestCaseSpecificResultText getCaseSpecificResultL();
hgs
parents:
diff changeset
   103
    
hgs
parents:
diff changeset
   104
    
hgs
parents:
diff changeset
   105
    TInt SequenceIndex();
hgs
parents:
diff changeset
   106
    
hgs
parents:
diff changeset
   107
protected:
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
    /**
hgs
parents:
diff changeset
   110
     * Perform measurements.
hgs
parents:
diff changeset
   111
     */
hgs
parents:
diff changeset
   112
    inline void MeasureNow();
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
    /**
hgs
parents:
diff changeset
   115
     * Completes request status now.
hgs
parents:
diff changeset
   116
     * @param aStatus request status to be completed.
hgs
parents:
diff changeset
   117
     * @param aErrorCode completion error code to be used.
hgs
parents:
diff changeset
   118
     */
hgs
parents:
diff changeset
   119
    inline static void CompleteNow( TRequestStatus& aStatus, TInt aErrorCode );
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
    /* 
hgs
parents:
diff changeset
   122
     * Gives access to stored CEikonEnv pointer
hgs
parents:
diff changeset
   123
     */
hgs
parents:
diff changeset
   124
    CEikonEnv* EikonEnv();
hgs
parents:
diff changeset
   125
    
hgs
parents:
diff changeset
   126
    /*
hgs
parents:
diff changeset
   127
     * Protected constructor
hgs
parents:
diff changeset
   128
     */
hgs
parents:
diff changeset
   129
    CAlfPerfAppTestCase(TInt aSequenceIndex);
hgs
parents:
diff changeset
   130
    
hgs
parents:
diff changeset
   131
private:
hgs
parents:
diff changeset
   132
    /**
hgs
parents:
diff changeset
   133
     * Interface towards execution environment.
hgs
parents:
diff changeset
   134
     * Not owned.
hgs
parents:
diff changeset
   135
     */
hgs
parents:
diff changeset
   136
    MAlfPerfAppTestCaseInterface* iInterface;
hgs
parents:
diff changeset
   137
    
hgs
parents:
diff changeset
   138
    /*
hgs
parents:
diff changeset
   139
     * Pointer to CEikonEnv.
hgs
parents:
diff changeset
   140
     */
hgs
parents:
diff changeset
   141
    CEikonEnv* iEnv;
hgs
parents:
diff changeset
   142
    
hgs
parents:
diff changeset
   143
    /*
hgs
parents:
diff changeset
   144
     * Tells which iteration of this same case this is.
hgs
parents:
diff changeset
   145
     * 0 Means that this is not a sequence case.
hgs
parents:
diff changeset
   146
     */
hgs
parents:
diff changeset
   147
    TInt iSequenceIndex;
hgs
parents:
diff changeset
   148
    
hgs
parents:
diff changeset
   149
    };
hgs
parents:
diff changeset
   150
hgs
parents:
diff changeset
   151
inline void CAlfPerfAppTestCase::SetInterface( 
hgs
parents:
diff changeset
   152
        MAlfPerfAppTestCaseInterface* aInterface )
hgs
parents:
diff changeset
   153
    {
hgs
parents:
diff changeset
   154
    iInterface = aInterface;
hgs
parents:
diff changeset
   155
    }
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
inline void CAlfPerfAppTestCase::MeasureNow()
hgs
parents:
diff changeset
   158
    {
hgs
parents:
diff changeset
   159
    if ( iInterface )
hgs
parents:
diff changeset
   160
        {
hgs
parents:
diff changeset
   161
        iInterface->MeasureNow();
hgs
parents:
diff changeset
   162
        }
hgs
parents:
diff changeset
   163
    }
hgs
parents:
diff changeset
   164
hgs
parents:
diff changeset
   165
inline void CAlfPerfAppTestCase::CompleteNow( TRequestStatus& aStatus, TInt aErrorCode )
hgs
parents:
diff changeset
   166
    {
hgs
parents:
diff changeset
   167
    __ASSERT_ALWAYS( aStatus.Int() == KRequestPending, User::Invariant() );
hgs
parents:
diff changeset
   168
    TRequestStatus* status = &aStatus;
hgs
parents:
diff changeset
   169
    User::RequestComplete( status, aErrorCode );
hgs
parents:
diff changeset
   170
    }
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
#endif // C_ALFPERFAPPTESTCASE_H
hgs
parents:
diff changeset
   173