ximpfw/tsrc/tsrcutils/testcaseutils/prfwtestfiletool.h
author hgs
Wed, 03 Nov 2010 22:25:05 +0530
changeset 52 3d676fce9a4e
parent 51 61fad867f68e
permissions -rw-r--r--
201044_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2006 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:  Test support file tool
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 CPRFWTESTFILETOOL_H
hgs
parents:
diff changeset
    20
#define CPRFWTESTFILETOOL_H 
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <e32base.h>
hgs
parents:
diff changeset
    23
#include <ximpbase.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
class CXIMPApiEventBase;
hgs
parents:
diff changeset
    26
class CXIMPTestFileSrvMsg;
hgs
parents:
diff changeset
    27
class MXIMPTestFileObserver;
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
/**
hgs
parents:
diff changeset
    30
 * File support for tests.
hgs
parents:
diff changeset
    31
 * Support functions for externalizing a class to a known directory and
hgs
parents:
diff changeset
    32
 * retrieving the classes.
hgs
parents:
diff changeset
    33
 *
hgs
parents:
diff changeset
    34
 * This is a sort of "pseudo-IPC" from the test protocol (ecom plugin)
hgs
parents:
diff changeset
    35
 * to EUnit test code. A server could also be used, but this is faster
hgs
parents:
diff changeset
    36
 * to do and simpler.
hgs
parents:
diff changeset
    37
 *
hgs
parents:
diff changeset
    38
 * @since S60 v4.0
hgs
parents:
diff changeset
    39
 */
hgs
parents:
diff changeset
    40
class CXIMPTestFileTool : public CBase
hgs
parents:
diff changeset
    41
    {
hgs
parents:
diff changeset
    42
    public:
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
        IMPORT_C static CXIMPTestFileTool* NewL( TUint32 aUid, const TDesC16& aInstanceId );
hgs
parents:
diff changeset
    45
        IMPORT_C static CXIMPTestFileTool* NewL( TUint32 aUid, TInt aInstanceIdAsNum );
hgs
parents:
diff changeset
    46
        virtual ~CXIMPTestFileTool();
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
    private:
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
        CXIMPTestFileTool( TUint32 aUid );
hgs
parents:
diff changeset
    51
        void ConstructL( const TDesC16& aInstanceId );
hgs
parents:
diff changeset
    52
        void ConstructL( TInt aInstanceIdAsNum );
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
    public:
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
        /**
hgs
parents:
diff changeset
    57
         * Clean all files from the filetool directory.
hgs
parents:
diff changeset
    58
         * Remove also the directory itself.
hgs
parents:
diff changeset
    59
         * Removes EVERYTHING from ALL DIRECTORIES used
hgs
parents:
diff changeset
    60
         * by filetool!!! So don't call it everytime, only once
hgs
parents:
diff changeset
    61
         * upon test case startup.
hgs
parents:
diff changeset
    62
         */
hgs
parents:
diff changeset
    63
        IMPORT_C static void CleanAllL();
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
        /**
hgs
parents:
diff changeset
    66
         * Prepares for writing only the directory used by this
hgs
parents:
diff changeset
    67
         * filetool instance
hgs
parents:
diff changeset
    68
         */
hgs
parents:
diff changeset
    69
        IMPORT_C void PrepareL();
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
        /**
hgs
parents:
diff changeset
    72
         * Store the object to file.
hgs
parents:
diff changeset
    73
         * The given descriptor is externalized as given,
hgs
parents:
diff changeset
    74
         * with the length of the descriptor written first,
hgs
parents:
diff changeset
    75
         * as a 32-bit TUint:
hgs
parents:
diff changeset
    76
         * <length of descriptor 32-bit><descriptor data>
hgs
parents:
diff changeset
    77
         * @param aExternalizedObject The externalized object
hgs
parents:
diff changeset
    78
         */
hgs
parents:
diff changeset
    79
        IMPORT_C void PluginStoreL( const TDesC8& aExternalizedObject );
hgs
parents:
diff changeset
    80
        
hgs
parents:
diff changeset
    81
        /**
hgs
parents:
diff changeset
    82
         * Restore a stored object from file.
hgs
parents:
diff changeset
    83
         * Ownership is transferred!
hgs
parents:
diff changeset
    84
         * @param aObjIndex The index for the object
hgs
parents:
diff changeset
    85
         */
hgs
parents:
diff changeset
    86
        IMPORT_C CXIMPApiEventBase* PluginRestoreLC( TInt aObjIndex );
hgs
parents:
diff changeset
    87
        
hgs
parents:
diff changeset
    88
        /**
hgs
parents:
diff changeset
    89
         * Store the object to file. (SERVER MESSAGE)
hgs
parents:
diff changeset
    90
         * The given descriptor is externalized as given,
hgs
parents:
diff changeset
    91
         * with the length of the descriptor written first,
hgs
parents:
diff changeset
    92
         * as a 32-bit TUint:
hgs
parents:
diff changeset
    93
         * <length of descriptor 32-bit><descriptor data>
hgs
parents:
diff changeset
    94
         * @param aExternalizedObject The externalized object
hgs
parents:
diff changeset
    95
         */
hgs
parents:
diff changeset
    96
        IMPORT_C void SrvMsgStoreL( CXIMPTestFileSrvMsg* aSrvMsg );
hgs
parents:
diff changeset
    97
        
hgs
parents:
diff changeset
    98
        /**
hgs
parents:
diff changeset
    99
         * Restore a stored object from file. (SERVER MESSAGE)
hgs
parents:
diff changeset
   100
         * Ownership is transferred!
hgs
parents:
diff changeset
   101
         * @param aIndex The index for the object
hgs
parents:
diff changeset
   102
         */
hgs
parents:
diff changeset
   103
        IMPORT_C CXIMPTestFileSrvMsg* SrvMsgRestoreLC( TInt aIndex );
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
        /**
hgs
parents:
diff changeset
   106
         * Return the number of objects currently stored in the directory.
hgs
parents:
diff changeset
   107
         */
hgs
parents:
diff changeset
   108
        IMPORT_C TInt NumObjectsL();
hgs
parents:
diff changeset
   109
        
hgs
parents:
diff changeset
   110
        /**
hgs
parents:
diff changeset
   111
         * Return the number of objects depicting server-originated
hgs
parents:
diff changeset
   112
         * message currently stored in the directory.
hgs
parents:
diff changeset
   113
         */
hgs
parents:
diff changeset
   114
        IMPORT_C TInt NumSrvMsgL();
hgs
parents:
diff changeset
   115
        
hgs
parents:
diff changeset
   116
        /**
hgs
parents:
diff changeset
   117
         * @return Instance id
hgs
parents:
diff changeset
   118
         */
hgs
parents:
diff changeset
   119
        IMPORT_C const TDesC16& InstanceId() const;
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
    private:
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
        /**
hgs
parents:
diff changeset
   124
         * @return The directory name (with backslash)
hgs
parents:
diff changeset
   125
         * (E.g. "C:/temp/prfw/1234/0/SrvMsg/")
hgs
parents:
diff changeset
   126
         */
hgs
parents:
diff changeset
   127
        HBufC* GetDirNameAndBackslashLC( 
hgs
parents:
diff changeset
   128
                const TDesC& aTemplate );
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
        /**
hgs
parents:
diff changeset
   131
         * @return Wildcard for file deletion 
hgs
parents:
diff changeset
   132
         * (E.g. "C:/temp/prfw/1234/0/SrvMsg/file*.prfw")
hgs
parents:
diff changeset
   133
         * @param aDirTemplate The directory template for the wildcard
hgs
parents:
diff changeset
   134
         */
hgs
parents:
diff changeset
   135
        HBufC* GetWildcardLC( 
hgs
parents:
diff changeset
   136
                const TDesC& aDirTemplate );
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
        /**
hgs
parents:
diff changeset
   139
         * Get the full file name, properly expanded.
hgs
parents:
diff changeset
   140
         * @param aDirTemplate The template for the dirs
hgs
parents:
diff changeset
   141
         * @param aObjIndex The object index
hgs
parents:
diff changeset
   142
         */
hgs
parents:
diff changeset
   143
        HBufC* GetFileNameLC( 
hgs
parents:
diff changeset
   144
                const TDesC& aDirTemplate,
hgs
parents:
diff changeset
   145
                TInt aObjIndex );
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
        /**
hgs
parents:
diff changeset
   148
         * @return Length of the given number as if it were a string.
hgs
parents:
diff changeset
   149
         * @param aNum The number
hgs
parents:
diff changeset
   150
         */
hgs
parents:
diff changeset
   151
        TInt NumLenInChars( TInt aNum );
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
        /**
hgs
parents:
diff changeset
   154
         * @return Listing of the directory
hgs
parents:
diff changeset
   155
         * @param aTemplate The wildcard template for the files
hgs
parents:
diff changeset
   156
         */
hgs
parents:
diff changeset
   157
        CDir* GetDirListL( const TDesC& aTemplate );
hgs
parents:
diff changeset
   158
        
hgs
parents:
diff changeset
   159
        /**
hgs
parents:
diff changeset
   160
         * Common helper for NumObjects methods.
hgs
parents:
diff changeset
   161
         */
hgs
parents:
diff changeset
   162
        TInt DoNumObjectsL( const TDesC& aTemplate );
hgs
parents:
diff changeset
   163
        
hgs
parents:
diff changeset
   164
        /**
hgs
parents:
diff changeset
   165
         *
hgs
parents:
diff changeset
   166
         */
hgs
parents:
diff changeset
   167
        static TInt Process( TAny* aMyself );
hgs
parents:
diff changeset
   168
        void DoProcessL();
hgs
parents:
diff changeset
   169
        
hgs
parents:
diff changeset
   170
    public:
hgs
parents:
diff changeset
   171
      
hgs
parents:
diff changeset
   172
        /**
hgs
parents:
diff changeset
   173
         * Observer registration
hgs
parents:
diff changeset
   174
         */
hgs
parents:
diff changeset
   175
        void RegisterObserverL( MXIMPTestFileObserver* aObserver );        
hgs
parents:
diff changeset
   176
        void UnregisterObserver( MXIMPTestFileObserver* aObserver );
hgs
parents:
diff changeset
   177
        
hgs
parents:
diff changeset
   178
        
hgs
parents:
diff changeset
   179
    private: // data
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
        TUint32 iUid;       // protocoluid
hgs
parents:
diff changeset
   182
        HBufC16* iInstance;     // the global instance id
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
        TInt iObjIndex;     // object index for created objects
hgs
parents:
diff changeset
   185
        TInt iSrvObjIndex;  // object index for created srvmsg objects
hgs
parents:
diff changeset
   186
        RFs iFs;
hgs
parents:
diff changeset
   187
        
hgs
parents:
diff changeset
   188
        
hgs
parents:
diff changeset
   189
        /**
hgs
parents:
diff changeset
   190
         * Monitor on when there is observers. 
hgs
parents:
diff changeset
   191
         * Call HandleL for observers for every new file.         
hgs
parents:
diff changeset
   192
         */
hgs
parents:
diff changeset
   193
        RPointerArray< MXIMPTestFileObserver > iObservers;
hgs
parents:
diff changeset
   194
        
hgs
parents:
diff changeset
   195
        // timer
hgs
parents:
diff changeset
   196
        CPeriodic* iTimer;        
hgs
parents:
diff changeset
   197
    };
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
#endif // CPRFWTESTFILETOOL_H