summaryrefslogtreecommitdiff
path: root/automation/source/testtool/objtest.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'automation/source/testtool/objtest.hxx')
-rw-r--r--automation/source/testtool/objtest.hxx403
1 files changed, 403 insertions, 0 deletions
diff --git a/automation/source/testtool/objtest.hxx b/automation/source/testtool/objtest.hxx
new file mode 100644
index 000000000000..d82e4626a4d2
--- /dev/null
+++ b/automation/source/testtool/objtest.hxx
@@ -0,0 +1,403 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _OBJTEST_HXX
+#define _OBJTEST_HXX
+
+#include <tools/fsys.hxx>
+
+
+#include <testapp.hxx>
+#include <testtool.hxx>
+#include "cmdstrm.hxx"
+#include <basic/basicrt.hxx>
+#include <vcl/smartid.hxx>
+#include "httprequest.hxx"
+
+#include <map>
+
+// #define ID_BeginBlock 1
+// #define ID_EndBlock 2
+#define ID_Kontext 3
+#define ID_GetError 4
+#define ID_ErrorDummy 5 // Intern zum Behandlen von Fehlenden Controls und Methoden
+#define ID_RecordError 6
+#define ID_Start 7
+//#define ID_Kill 8
+//#define ID_Reset 9
+// #define ID_AppAbort 10
+#define ID_Dispatch 11
+#define ID_UNODispatch 12
+#define ID_Control 13
+#define ID_StartUse 14
+#define ID_Use 15
+#define ID_FinishUse 16
+#define ID_CaseLog 17
+#define ID_ExceptLog 18
+#define ID_PrintLog 19
+#define ID_WarnLog 20
+#define ID_ErrorLog 21
+#define ID_EnableQaErrors 22
+#define ID_QAErrorLog 23
+#define ID_MaybeAddErr 24
+#define ID_ClearError 25
+#define ID_GetNextCloseWindow 26
+#define ID_RemoteCommand 27
+#define ID_SaveIDs 28
+#define ID_AutoExecute 29
+#define ID_Execute 30
+#define ID_DialogHandler 31
+#define ID_GetUnoApp 32
+#define ID_GetIServer 33
+#define ID_RemoteCommandDelay 34
+#define ID_GetApplicationPath 35
+#define ID_GetCommonApplicationPath 36
+#define ID_MakeIniFileName 37
+#define ID_StringControl 38
+#define ID_Wait 39
+#define ID_GetErrorCount 40
+#define ID_GetWarningCount 41
+#define ID_GetQAErrorCount 42
+#define ID_GetUseFileWarningCount 43
+#define ID_GetErrorList 44
+#define ID_GetWarningList 45
+#define ID_GetQAErrorList 46
+#define ID_GetUseFileWarningList 47
+#define ID_GetTestCaseName 48
+#define ID_GetTestCaseFileName 49
+#define ID_GetTestCaseLineNr 50
+#define ID_StopOnSyntaxError 51
+#define ID_SetChildEnv 52
+#define ID_GetChildEnv 53
+#define ID_GetLinkDestination 54
+#define ID_GetRegistryValue 55
+#define ID_KillApp 56
+#define ID_HTTPSend 57
+#define ID_HTTPSetProxy 58
+#define ID_DoNothing 99
+
+void ReadFlatArray( const ControlDefLoad arWas [], CNames *&pNames );
+
+class ControlData
+{
+public:
+ String Kurzname;
+ SmartId aUId;
+};
+
+DBG_NAMEEX( ControlItem )
+DBG_NAMEEX( ControlDef )
+class ControlItem
+{
+private:
+ void InitData() { pData = new ControlData; }
+public:
+ ControlData *pData;
+
+ ControlItem( const char *Name, SmartId aUIdP );
+ ControlItem( const String &Name, SmartId aUIdP );
+// ControlItem( const String &Name, const String &URL, const URLType aType );
+// ControlItem( const String &Name, const String &URL, const ULONG nUId );
+// ControlItem( const char *Name, const String &URL, const ULONG nUId );
+ ControlItem( ControlData *pDataP );
+ virtual ~ControlItem() {
+DBG_DTOR(ControlItem,0);
+ delete pData;
+ }
+ virtual BOOL operator < (const ControlItem &rPar)=0;
+ virtual BOOL operator == (const ControlItem &rPar)=0;
+// void Write( SvStream &aStream );
+};
+
+SV_DECL_PTRARR_SORT_DEL(CNames, ControlItem*, 50, 10)
+
+#define MK_SON_ACCESS( ClassName )\
+ BOOL SonInsert( const ClassName *pNewEntry ) { const ControlItem *pItem = pNewEntry; return pSons->Insert( pItem ); }\
+ BOOL SonSeek_Entry( const ClassName *pSearchEntry, USHORT *nRes = NULL) { return pSons->Seek_Entry( pSearchEntry, nRes ); }\
+ ClassName* SonGetObject( USHORT nNr ) { return (ClassName*)pSons->GetObject( nNr ); }
+
+class ControlSon
+{
+protected:
+ CNames *pSons; // um sicherzustelle, daß nur Söhne des richtien Type reinkommen
+
+public:
+ ControlSon() : pSons( NULL ) {};
+ ~ControlSon();
+// void Write( SvStream &aStream );
+
+ USHORT Son_Count() { return pSons->Count(); }
+ void Sons( CNames *pNewSons ) { pSons = pNewSons; }
+ CNames*& GetSons() { return pSons; }
+};
+
+class ControlItemSon : public ControlItem, public ControlSon
+{
+public:
+ ControlItemSon(const char *Name, SmartId aUIdP )
+ : ControlItem( Name, aUIdP ) {}
+ ControlItemSon(const String &Name, SmartId aUIdP );
+// ControlItemSon(const String &Name, const String &URL, const URLType aType );
+// ControlItemSon(const String &Name, const String &URL, const ULONG nUId );
+// ControlItemSon(const char *Name, const String &URL, const ULONG nUId );
+// void Write( SvStream &aStream );
+};
+
+class ControlDef : public ControlItemSon
+{
+public:
+ ControlDef(const char *Name, SmartId aUIdP )
+ : ControlItemSon( Name, aUIdP ) {DBG_CTOR(ControlDef,0);}
+ ControlDef(const String &Name, SmartId aUIdP );
+// ControlDef(const String &Name, const String &URL, const URLType aType );
+ ControlDef(const String &aOldName, const String &aNewName, ControlDef *pOriginal, BOOL bWithSons = FALSE );
+ ~ControlDef() {DBG_DTOR(ControlDef,0);}
+ virtual BOOL operator < (const ControlItem &rPar);
+ virtual BOOL operator == (const ControlItem &rPar);
+ void Write( SvStream &aStream );
+ MK_SON_ACCESS( ControlDef )
+};
+
+class ControlItemUId : public ControlItem
+{
+public:
+ ControlItemUId(String Name, SmartId aUIdP)
+ : ControlItem( Name, aUIdP){}
+ virtual BOOL operator < (const ControlItem &rPar);
+ virtual BOOL operator == (const ControlItem &rPar);
+};
+
+class ControlItemUIdSon : public ControlItemUId, public ControlSon
+{
+public:
+ ControlItemUIdSon(String Name, SmartId aUIdP) : ControlItemUId( Name, aUIdP) {}
+ MK_SON_ACCESS( ControlItemUId )
+};
+
+class ReverseName : public ControlItemUId
+{
+public:
+ ULONG LastSequence;
+
+ ReverseName(String Name, SmartId aUIdP, ULONG nSeq) : ControlItemUId( Name, aUIdP), LastSequence(nSeq) {}
+};
+
+class CRevNames: public CNames
+{
+public:
+ void Insert( String aName, SmartId aUId, ULONG nSeq );
+ String GetName( SmartId aUId );
+ void Invalidate ( ULONG nSeq );
+};
+
+
+class SbxTransportMethod: public SbxMethod
+{
+public:
+ SbxTransportMethod( SbxDataType );
+ ULONG nValue;
+ String aUnoSlot;
+};
+SV_DECL_IMPL_REF(SbxTransportMethod);
+
+class Controls: public SbxObject
+{
+public:
+ Controls( String aCName );
+ ~Controls();
+ void ChangeListener( SbxObject* pParent );
+
+ void SFX_NOTIFY( SfxBroadcaster&, const TypeId&, const SfxHint& rHint, const TypeId& );
+ virtual SbxVariable* Find( const String&, SbxClassType );
+ SbxTransportMethodRef pMethodVar; // zum Transport von Find nach Notify
+ static CNames *pClasses;
+ static ControlDefLoad __READONLY_DATA arClasses [];
+};
+SV_DECL_IMPL_REF(Controls);
+
+typedef std::map< String, String > Environment;
+
+class ImplTestToolObj
+{
+public:
+// ImplTestToolObj()
+// ~ImplTestToolObj()
+
+ String ProgParam; // Parameter der zu Testenden APP; Gesetzt über Start
+
+ DirEntry aFileBase; // Grundpfad für die *.sid und *.win Dateien (Aus Configdatei)
+ DirEntry aLogFileBase; // Grundpfad für die *.res Dateien (Aus Configdatei)
+ DirEntry aHIDDir; // Verzeichnis, in dem die hid.lst gesucht wird
+
+ SbxTransportMethodRef pNextReturn; // Verweis auf die Var, die den Returnwert aufnimmt.
+
+ ControlsRef pControlsObj; // Jeweiliges Objekt, an dem Methoden aufgerufen weden.
+
+#define VAR_POOL_SIZE 8
+ SbxTransportMethodRef pMyVars[VAR_POOL_SIZE]; // Falls in Ausdrücken mehrere verwendet werden
+
+ Time aServerTimeout;
+
+
+// Profiling Datenfelder
+ ULONG LocalStarttime;
+ USHORT nNumBorders;
+ ULONG naValBorders[4];
+ ULONG naNumEntries[5];
+ ULONG naRemoteTime[5];
+ ULONG naLocalTime[5];
+
+ ULONG nMinRemoteCommandDelay;
+ ULONG nMaxRemoteCommandDelay;
+ BOOL bDoRemoteCommandDelay;
+
+ BOOL bLnaguageExtensionLoaded; // Wurde über 'use' was geladen? Für syntax highlighting
+ SfxBroadcaster *pTTSfxBroadcaster;
+
+ ULONG nErrorCount;
+ ULONG nWarningCount;
+ ULONG nQAErrorCount;
+ ULONG nIncludeFileWarningCount;
+
+ SbxDimArrayRef xErrorList;
+ SbxDimArrayRef xWarningList;
+ SbxDimArrayRef xQAErrorList;
+ SbxDimArrayRef xIncludeFileWarningList;
+
+ BOOL bIsStart; // set tu TRUE while command Start is initiating the communication
+
+ MyBasic* pMyBasic;
+
+ String aTestCaseName; // holds name of current TestCase
+ String aTestCaseFileName; // holds FileName of current TestCase
+ USHORT nTestCaseLineNr; // holds Line of current TestCase
+
+ BOOL bEnableQaErrors; // include QA errors in report
+ BOOL bDebugFindNoErrors; // suppress generating errors when find of variables is called for variable viewing purposes
+
+ BOOL bStopOnSyntaxError; // catch syntax errors in testcases or not
+
+ Environment *pChildEnv; // Environment Variables for child Process
+
+ HttpRequest *pHttpRequest; // used for sending HTTP requests
+};
+
+
+class TTFormat
+{
+public:
+ static String ms2s( ULONG nMilliSeconds );
+};
+
+
+#define ADD_TO_LOG( aLogTypep, aMsgp, aFilenamep, nLinep, nCol1p, nCol2p, aRevisionp, pLogList )\
+{ \
+ TTLogMsg *pLogMsg = new TTLogMsg(); \
+ pLogMsg->aDebugData.aMsg = aMsgp; \
+ pLogMsg->aLogFileName = (pImpl->aLogFileBase + DirEntry(aLogFileName)).GetFull(); \
+ pLogMsg->aDebugData.aFilename = aFilenamep; \
+ pLogMsg->aDebugData.nLine = nLinep; \
+ pLogMsg->aDebugData.nCol1 = nCol1p; \
+ pLogMsg->aDebugData.nCol2 = nCol2p; \
+ pLogMsg->aDebugData.aLogType = aLogTypep; \
+ aLogHdl.Call( pLogMsg ); \
+ void* pDummyForWarningAboutNULL = pLogList; \
+ if( pDummyForWarningAboutNULL ) \
+ { \
+ SbxDimArray* pLogArray = (SbxDimArray*)pLogList; \
+ SbxVariable* pLogLine = new SbxVariable( SbxSTRING ); \
+ String aCollect; \
+ aCollect.Append( pLogMsg->aDebugData.aFilename ); \
+ aCollect.AppendAscii( ";" ); \
+ aCollect.Append( String::CreateFromInt32( nLinep ) ); \
+ aCollect.AppendAscii( ";" ); \
+ aCollect.Append( aRevisionp ); \
+ aCollect.AppendAscii( ";" ); \
+ aCollect.Append( pLogMsg->aDebugData.aMsg ); \
+ pLogLine->PutString( aCollect ); \
+ pLogArray->Insert( pLogLine, pLogArray->Count() ); \
+ } \
+ delete pLogMsg; \
+} \
+
+
+#define ADD_RUN_LOG() \
+ ADD_TO_LOG(LOG_RUN, String(), String(), 0, 0, 0, String(), NULL) \
+
+#define ADD_ERROR_LOG(aMsg, aFilename, nLine, nCol1, nCol2, aRevision) \
+{ \
+ ADD_TO_LOG(LOG_ERROR, aMsg, aFilename, nLine, nCol1, nCol2, aRevision, &pImpl->xErrorList) \
+ pImpl->nErrorCount++; \
+}
+
+#define ADD_CALL_STACK_LOG(aMsg, aFilename, nLine, nCol1, nCol2) \
+ ADD_TO_LOG(LOG_CALL_STACK, aMsg, aFilename, nLine, nCol1, nCol2, String(), NULL) \
+
+
+#define ADD_AUTO_LOG(aLogType, aMsg, pLogList) \
+{ \
+ if ( BasicRuntimeAccess::HasRuntime() ) \
+ { \
+ BasicRuntime aRun = BasicRuntimeAccess::GetRuntime(); \
+ ADD_TO_LOG(aLogType, aMsg, aRun.GetModuleName(SbxNAME_SHORT_TYPES), \
+ aRun.GetLine(), aRun.GetCol1(), aRun.GetCol2(), aRun.GetSourceRevision(), pLogList) \
+ } \
+ else \
+ { \
+ ADD_TO_LOG(aLogType, aMsg, UniString(), 0, 0, STRING_LEN, String(), pLogList) \
+ } \
+} \
+
+#define ADD_CASE_LOG(aMsg) \
+ ADD_AUTO_LOG(LOG_TEST_CASE, aMsg, NULL) \
+
+#define ADD_MESSAGE_LOG(aMsg) \
+ ADD_AUTO_LOG(LOG_MESSAGE, aMsg, NULL) \
+
+#define ADD_WARNING_LOG(aMsg) \
+{ \
+ ADD_AUTO_LOG(LOG_WARNING, aMsg, &pImpl->xWarningList) \
+ pImpl->nWarningCount++; \
+}
+
+#define ADD_WARNING_LOG2(aMsg, aFilename, nLine ) \
+{ \
+ ADD_TO_LOG(LOG_WARNING, aMsg, aFilename, nLine, 0, STRING_LEN, String(), &pImpl->xWarningList) \
+ pImpl->nWarningCount++; \
+}
+
+#define ADD_ASSERTION_LOG(aMsg) \
+ ADD_AUTO_LOG(LOG_ASSERTION, aMsg, NULL) \
+
+#define ADD_QA_ERROR_LOG(aMsg) \
+ if ( pImpl->bEnableQaErrors ) \
+ { \
+ ADD_AUTO_LOG(LOG_QA_ERROR, aMsg, &pImpl->xQAErrorList) \
+ pImpl->nQAErrorCount++; \
+ }
+
+#endif