diff -r 000000000000 -r e6b17d312c8b ximpfw/tsrc/tsrcutils/testcaseutils/prfwtestfiletool.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ximpfw/tsrc/tsrcutils/testcaseutils/prfwtestfiletool.h Thu Dec 17 08:54:49 2009 +0200 @@ -0,0 +1,199 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Test support file tool + * +*/ + + +#ifndef CPRFWTESTFILETOOL_H +#define CPRFWTESTFILETOOL_H + +#include +#include + +class CXIMPApiEventBase; +class CXIMPTestFileSrvMsg; +class MXIMPTestFileObserver; + +/** + * File support for tests. + * Support functions for externalizing a class to a known directory and + * retrieving the classes. + * + * This is a sort of "pseudo-IPC" from the test protocol (ecom plugin) + * to EUnit test code. A server could also be used, but this is faster + * to do and simpler. + * + * @since S60 v4.0 + */ +class CXIMPTestFileTool : public CBase + { + public: + + IMPORT_C static CXIMPTestFileTool* NewL( TUint32 aUid, const TDesC16& aInstanceId ); + IMPORT_C static CXIMPTestFileTool* NewL( TUint32 aUid, TInt aInstanceIdAsNum ); + virtual ~CXIMPTestFileTool(); + + private: + + CXIMPTestFileTool( TUint32 aUid ); + void ConstructL( const TDesC16& aInstanceId ); + void ConstructL( TInt aInstanceIdAsNum ); + + public: + + /** + * Clean all files from the filetool directory. + * Remove also the directory itself. + * Removes EVERYTHING from ALL DIRECTORIES used + * by filetool!!! So don't call it everytime, only once + * upon test case startup. + */ + IMPORT_C static void CleanAllL(); + + /** + * Prepares for writing only the directory used by this + * filetool instance + */ + IMPORT_C void PrepareL(); + + /** + * Store the object to file. + * The given descriptor is externalized as given, + * with the length of the descriptor written first, + * as a 32-bit TUint: + * + * @param aExternalizedObject The externalized object + */ + IMPORT_C void PluginStoreL( const TDesC8& aExternalizedObject ); + + /** + * Restore a stored object from file. + * Ownership is transferred! + * @param aObjIndex The index for the object + */ + IMPORT_C CXIMPApiEventBase* PluginRestoreLC( TInt aObjIndex ); + + /** + * Store the object to file. (SERVER MESSAGE) + * The given descriptor is externalized as given, + * with the length of the descriptor written first, + * as a 32-bit TUint: + * + * @param aExternalizedObject The externalized object + */ + IMPORT_C void SrvMsgStoreL( CXIMPTestFileSrvMsg* aSrvMsg ); + + /** + * Restore a stored object from file. (SERVER MESSAGE) + * Ownership is transferred! + * @param aIndex The index for the object + */ + IMPORT_C CXIMPTestFileSrvMsg* SrvMsgRestoreLC( TInt aIndex ); + + /** + * Return the number of objects currently stored in the directory. + */ + IMPORT_C TInt NumObjectsL(); + + /** + * Return the number of objects depicting server-originated + * message currently stored in the directory. + */ + IMPORT_C TInt NumSrvMsgL(); + + /** + * @return Instance id + */ + IMPORT_C const TDesC16& InstanceId() const; + + private: + + /** + * @return The directory name (with backslash) + * (E.g. "C:/temp/prfw/1234/0/SrvMsg/") + */ + HBufC* GetDirNameAndBackslashLC( + const TDesC& aTemplate ); + + /** + * @return Wildcard for file deletion + * (E.g. "C:/temp/prfw/1234/0/SrvMsg/file*.prfw") + * @param aDirTemplate The directory template for the wildcard + */ + HBufC* GetWildcardLC( + const TDesC& aDirTemplate ); + + /** + * Get the full file name, properly expanded. + * @param aDirTemplate The template for the dirs + * @param aObjIndex The object index + */ + HBufC* GetFileNameLC( + const TDesC& aDirTemplate, + TInt aObjIndex ); + + /** + * @return Length of the given number as if it were a string. + * @param aNum The number + */ + TInt NumLenInChars( TInt aNum ); + + /** + * @return Listing of the directory + * @param aTemplate The wildcard template for the files + */ + CDir* GetDirListL( const TDesC& aTemplate ); + + /** + * Common helper for NumObjects methods. + */ + TInt DoNumObjectsL( const TDesC& aTemplate ); + + /** + * + */ + static TInt Process( TAny* aMyself ); + void DoProcessL(); + + public: + + /** + * Observer registration + */ + void RegisterObserverL( MXIMPTestFileObserver* aObserver ); + void UnregisterObserver( MXIMPTestFileObserver* aObserver ); + + + private: // data + + TUint32 iUid; // protocoluid + HBufC16* iInstance; // the global instance id + + TInt iObjIndex; // object index for created objects + TInt iSrvObjIndex; // object index for created srvmsg objects + RFs iFs; + + + /** + * Monitor on when there is observers. + * Call HandleL for observers for every new file. + */ + RPointerArray< MXIMPTestFileObserver > iObservers; + + // timer + CPeriodic* iTimer; + }; + +#endif // CPRFWTESTFILETOOL_H