1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: testapp.hxx,v $
10 * $Revision: 1.12.24.1 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
34 #include <basic/sbmod.hxx>
35 #include <basic/testtool.hxx>
36 #include <vcl/smartid.hxx>
38 class CommunicationLink
;
39 class CommunicationManagerClientViaSocketTT
;
43 //class SbxTransportVariableRef;
46 class FloatingLoadConf
;
50 class SbxTransportMethod
;
55 class ImplTestToolObj
;
61 ErrorEntry(ULONG nNr
, String aStr
= String()) : nError(nNr
),aText(aStr
),nLine(0),nCol1(0),nCol2(0) {}
62 ErrorEntry(ULONG nNr
, String aStr
, xub_StrLen l
, xub_StrLen c1
, xub_StrLen c2
)
63 : nError(nNr
),aText(aStr
),nLine(l
),nCol1(c1
),nCol2(c2
) {}
71 SV_DECL_PTRARR_DEL(CErrors
, ErrorEntry
*, 1, 1)
73 struct ControlDefLoad
{
78 class TestToolObj
: public SbxObject
81 friend class Controls
;
83 TestToolObj( String aName
, String aFilePath
); // Alle Dateien in FilePath, Kein IPC
84 TestToolObj( String aName
, MyBasic
* pBas
); // Pfade aus INI, IPC benutzen
86 void LoadIniFile(); // Laden der IniEinstellungen, die durch den ConfigDialog geändert werden können
87 void DebugFindNoErrors( BOOL bDebugFindNoErrors
);
90 BOOL bWasPrecompilerError
; // True wenn beim letzten Precompile ein Fehler auftrat
91 BOOL
CError( ULONG
, const String
&, xub_StrLen
, xub_StrLen
, xub_StrLen
);
92 void CalcPosition( String
const &aSource
, xub_StrLen nPos
, xub_StrLen
&l
, xub_StrLen
&c
);
93 xub_StrLen
ImplSearch( const String
&aSource
, const xub_StrLen nStart
, const xub_StrLen nEnd
, const String
&aSearch
, const xub_StrLen nSearchStart
= 0 );
94 xub_StrLen
PreCompilePart( String
&aSource
, xub_StrLen nStart
, xub_StrLen nEnd
, String aFinalErrorLabel
, USHORT
&nLabelCount
);
95 void PreCompileDispatchParts( String
&aSource
, String aStart
, String aEnd
, String aFinalLable
);
97 String
GetRevision(String
const &aSourceIn
); // find Revision in the sourcecode
98 String
PreCompile(String
const &aSourceIn
); // try catch; testcase endcase ..
99 BOOL
WasPrecompilerError(); // True wenn beim letzten Precompile ein Fehler auftrat
100 void SFX_NOTIFY( SfxBroadcaster
&, const TypeId
&, const SfxHint
& rHint
, const TypeId
& );
101 virtual SbxVariable
* Find( const String
&, SbxClassType
);
102 // String aKeyPlusClasses; // Pfad für keycodes & classes & res_type (Aus Configdatei)
103 DECL_LINK( ReturnResultsLink
, CommunicationLink
* );
104 BOOL
ReturnResults( SvStream
*pIn
); // Rücklieferung des Antwortstreams über IPC oder TCP/IP oder direkt
106 void SetLogHdl( const Link
& rLink
) { aLogHdl
= rLink
; }
107 const Link
& GetLogHdl() const { return aLogHdl
; }
109 void SetWinInfoHdl( const Link
& rLink
) { aWinInfoHdl
= rLink
; }
110 const Link
& GetWinInfoHdl() const { return aWinInfoHdl
; }
112 void SetModuleWinExistsHdl( const Link
& rLink
) { aModuleWinExistsHdl
= rLink
; }
113 const Link
& GetModuleWinExistsHdl() const { return aModuleWinExistsHdl
; }
115 void SetCErrorHdl( const Link
& rLink
) { aCErrorHdl
= rLink
; }
116 const Link
& GetCErrorHdl() const { return aCErrorHdl
; }
118 void SetWriteStringHdl( const Link
& rLink
) { aWriteStringHdl
= rLink
; }
119 const Link
& GetWriteStringHdl() const { return aWriteStringHdl
; }
121 SfxBroadcaster
& GetTTBroadcaster();
124 ImplTestToolObj
*pImpl
; // Alles was von der Implementation abhängt
125 static const CErrors
* GetFehlerListe() { return pFehlerListe
; }
127 Link aLogHdl
; // Zum Logen der Fehlermeldungen im Testtool
128 Link aWinInfoHdl
; // Anzeigen der Windows/Controls der zu testenden App
129 Link aModuleWinExistsHdl
; // Prüft ob das Modul schon im Editor geladen ist
130 Link aCErrorHdl
; // Melden von Compilererror
131 Link aWriteStringHdl
; // Schreiben von text (e.g. MakroRecorder)
132 BOOL bReturnOK
; // Bricht WaitForAnswer ab
133 CRevNames
*pShortNames
; // Aktuell verwendete Controls, zur gewinnung des Namens aus Fehlermeldung
134 ULONG nSequence
; // Sequence um Antwort und Anfrage zu syncronisieren
135 SmartId aNextReturnId
; // Id des Returnwertes i.e. UId
136 void ReplaceNumbers(String
&aText
); // Zahlen im String mit speziellem Format in Namen umwandeln
138 String aLastRecordedKontext
;// Keeps the last kontext recorded by the Macro Recorder
141 String ProgPath
; // Dateiname der zu Testenden APP; Gesetzt über Start
142 String aLogFileName
; // Momentaner Logfilename (Wie Programmdatei aber mit .res)
143 BOOL IsBlock
; // Innerhalb Begin/EndBlock
144 BOOL SingleCommandBlock
; // Implizit um jedes kommando ein Begin/EndBlock
147 void AddName(String
&aBisher
, String
&aNeu
); // Name eventuell mit / anhängen
148 void AddToListByNr( CNames
*&pControls
, ControlItemUId
*&pNewItem
); //
150 CNames
*m_pNameKontext
; // Zeigt auf den aktuellen Namenskontext, der über 'Kontext' gesetzt wurde
152 CNames
*m_pReverseSlots
; // Slots mit Kurznamen nach Nummer
153 CNames
*m_pReverseControls
; // Controls mit Kurznamen nach Nummer
154 CNames
*m_pReverseControlsSon
;// Controls mit Kurznamen nach Nummer nach Fenstern (Son)
155 CNames
*m_pReverseUIds
; // Langnamen nach Nummer
158 USHORT nMyVar
; // Wievielte Var aus Pool ist dran
160 void InitTestToolObj();
161 CommunicationManagerClientViaSocketTT
*pCommunicationManager
;
162 void SendViaSocket();
164 BOOL
Load( String aFileName
, SbModule
*pMod
);
166 void ReadNames( String Filename
, CNames
*&pNames
, CNames
*&pUIds
, BOOL bIsFlat
= FALSE
);
167 void ReadFlat( String Filename
, CNames
*&pNames
, BOOL bSortByName
);
168 BOOL
ReadNamesBin( String Filename
, CNames
*&pSIds
, CNames
*&pControls
);
169 BOOL
WriteNamesBin( String Filename
, CNames
*pSIds
, CNames
*pControls
);
170 void ReadHidLstByNumber();
171 void SortControlsByNumber( BOOL bIncludeActive
= FALSE
);
173 String
GetMethodName( ULONG nMethodId
);
174 String
GetKeyName( USHORT nKeyCode
);
176 void WaitForAnswer ();
177 DECL_LINK( IdleHdl
, Application
* );
178 DECL_LINK( CallDialogHandler
, Application
* );
179 String aDialogHandlerName
;
180 USHORT nWindowHandlerCallLevel
;
183 // wenn DialogHandler gesetzt wird er im IdleHandler inkrementiert und
184 // in WaitForAnswer rückgesetzt. Übersteigt er einen gewissen wert, gehe ich davon aus,
185 // daß WaitForAnswer still ligt und rufe die DialogHander Sub im BASIC auf.
190 SbTextType
GetSymbolType( const String
&rSymbol
, BOOL bWasControl
);
191 static ControlDefLoad
const arR_Cmds
[];
192 static CNames
*pRCommands
;
194 static CErrors
*pFehlerListe
; // Hier werden die Fehler des Testtools gespeichert