--- /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 <e32base.h>
+#include <ximpbase.h>
+
+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:
+ * <length of descriptor 32-bit><descriptor data>
+ * @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:
+ * <length of descriptor 32-bit><descriptor data>
+ * @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