bump product version to 7.6.3.2-android
[LibreOffice.git] / smoketest / data / Basic / Standard / Global.xml
blobfa28297fe695049380504a4faf5649647258cc00
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  *   Licensed to the Apache Software Foundation (ASF) under one or more
12  *   contributor license agreements. See the NOTICE file distributed
13  *   with this work for additional information regarding copyright
14  *   ownership. The ASF licenses this file to you under the Apache
15  *   License, Version 2.0 (the "License"); you may not use this file
16  *   except in compliance with the License. You may obtain a copy of
17  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  -->
19 <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
20 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Global" script:language="StarBasic">REM  *****  BASIC  *****
22 const cMaxErrorStates = 14
24 const cCoGreen = 4057917, cCoRed = 16711680, cCoGrey = 12632256
25 const cParagraphBreak = 0
27 global const cExtensionFileName = &quot;TestExtension.oxt&quot;
29 global const cDocNew = 0, cDocSaveOpen8 = 1, cDocClose = 3, cDocMacros = 4
30 global const cDBService = 0, cDBOpen = 1, cDBInsert = 2, cDBDelete = 3, cDBSeek = 4, cDBClose = 5
31 global const cEXTService = 0, cEXTInstall = 1, cEXTUninstall = 2
32 global const cTestClosureSetupDoc = 0, cTestClosureWriteStatus = 1
33 global const cLogfileFailed = 255
35 global const cStWriter = 0, cStCalc = 1, cStPraesentation = 2, cStZeichnen = 3
36 global const cStHTML = 6, cStChart = 4, cStJava = 7
37 global const cStMath = 5, cStDataBase = 9
38 global const cStExtension = 11
39 global const cStTestGlue = 12
40 global const cStNone = -1
42 global const cFlt8 = 0, cFltNewDoc = 64, cFltXML = 128
44 global const frmWriter = 1, frmCalc = 2, frmImpress = 4
45 global const frmMath = 5, frmChart = 7, frmHyperText = 8, frmDraw = 9
46 global const frmDataBase = 10, frmJava = 13
47 global const frmExtension = 14
48 global const frmTestClosure = 15
50 Global gCurrentDocTest As Integer
51 Global gCurrentTestCase As Integer
53 global const cLogUnknown = 0, cLogFalse = 1, cLogTrue = 2
55 &apos;UserFieldKennungen
56 Global const cYes = &quot;y&quot;, cNo = &quot;n&quot;
57 Global const cStateNo = 0, cStateYes = 1
59 &apos;FieldTypes
60 Global const cFtExtUser = 21, cFtPageNum = 5, cFtStatistic = 8, cFtDateTime = 27, cFtDatabase = 31
62 &apos;UnoStrings
63 Global const cUnoSeparator = &quot;.&quot;
64 Global const cUnoPrefix = &quot;com.sun.star.&quot;
65 Global const cUnoUserField = cUnoPrefix + &quot;text.FieldMaster.User&quot;
66 Global const cUnoExtUserField = cUnoPrefix + &quot;text.TextField.ExtendedUser&quot;
67 Global const cUnoMasterDataBase = cUnoPrefix + &quot;text.FieldMaster.Database&quot;
68 Global const cUnoDataBase = cUnoPrefix + &quot;text.TextField.Database&quot;
69 Global const cUnoDateTime = cUnoPrefix + &quot;text.TextField.DateTime&quot;
70 Global const cUnoTextGraphi2 = cUnoPrefix + &quot;text.Graphic&quot;
71 Global const cUnoJavaLoader = cUnoPrefix + &quot;loader.Java&quot;
72 Global const cUnoDatabaseContext = cUnoPrefix + &quot;sdb.DatabaseContext&quot;
73 Global const cUnoRowSet = cUnoPrefix + &quot;sdb.RowSet&quot;
74 Global const cUnoSmoketestTestExtension = cUnoPrefix + &quot;comp.smoketest.TestExtension&quot;
75 Global const cUnoSmoketestCommandEnvironment = cUnoPrefix + &quot;deployment.test.SmoketestCommandEnvironment&quot;
76 Global const cExtensionManager = cUnoPrefix + &quot;deployment.ExtensionManager&quot;
78 &apos;UserFieldNames
79 Global const cUserFieldTestWriter = &quot;Writer&quot;, cUserFieldTestCalc = &quot;Calc&quot;, cUserFieldTestImpress = &quot;Impress&quot;
80 Global const cUserFieldTestDraw = &quot;Draw&quot;, cUserFieldTestMath = &quot;Math&quot;, cUserFieldTestChart = &quot;Chart&quot;
81 Global const cUserFieldTestHTML = &quot;HTML&quot;, cUserFieldTestJava = &quot;Java&quot;, cUserFieldTestDatabase = &quot;Database&quot;
82 Global const cUserFieldTestExtension = &quot;Extension&quot;
83 Global const cUserFieldTestTerminateAfterTest = &quot;Terminate&quot;, cUserFieldTestOpenSave8 = &quot;SaveOpen8&quot;, cUserFieldTestMacros = &quot;Macros&quot;
85 Global const cOptionsDialogName = &quot;OptionsDlg&quot;, cTest10Modul = &quot;Standard&quot;
87 Global const cDlgCancel = 1, cDlgOk = 0, cDlgStartTest = 2
89 global gErrorState (cMaxErrorStates, 5) as integer
90 Global gTestCaseAnnotations( cMaxErrorStates, 5 ) As String
92 global gOutputDoc as Object
93 global gOutputDocNotUno as Object
94 global gOptionsDialog as Object
96 Global bMakeWriterTest as boolean, bMakeCalcTest as  boolean, bMakeImpressTest as boolean
97 Global bMakeDrawTest as Boolean, bMakeMathTest as boolean, bMakeChartTest as boolean
98 Global bMakeHTMLTest as boolean, bMakeJavaTest as boolean, bMakeDBTest as boolean
99 Global bMakeExtensionTest as boolean
100 Global bMakeTerminateAfterTest as boolean, bShowTable as boolean
101 Global bMakeSaveOpen8Test as boolean, bMakeMacrosTest as boolean
103 global sExtensionURL as string
105 Dim gDlgState as Integer
107 Sub SetGlobalDoc
108     gOutputDoc = ThisComponent
109 end Sub
111 Sub ClearStatus
112     for j% = 0 to cMaxErrorStates
113         for i% = 0 to 5
114             gErrorState (j%, i%) = cLogUnknown
115             gTestCaseAnnotations( J%, i% ) = ""
116         next i%
117     next j%
118 end Sub
120 Sub ClearAllText
121     call SetGlobalDoc
122     call ClearDoc (gOutputDoc)
123     call ClearStatus
124 end Sub
126 Sub Main
127     On Local Error Goto MainError
129     gCurrentDocTest = frmTestClosure
130     gCurrentTestCase = cLogfileFailed
132     DeleteAllSavedFiles()
133     DeleteAllLogFiles()
134     SetupWorkPath()
136     if GetSystem (sWorkPath) = &quot;windows&quot; then
137         sWorkPath = ConvertPathToWin (sWorkPath)
138     end if
140     LocalTestLog% = OpenLogDat( GetLogFileName( gCurrentDocTest ) )
142     gCurrentTestCase = cTestClosureSetupDoc
144     call SetGlobalDoc
146     Dim bWasModified as Boolean
147     bWasModified = gOutputDoc.isModified()
149     if bShowTable then
150         call ClearDoc (gOutputDoc)
151     end If
153     call ClearStatus
155     LogTestResult( GetTestGlueDescription( gCurrentTestCase ), TRUE )
157     Dim nPreserveFileHandle%
158     nPreserveFileHandle% = LocalTestLog%
159     Call Test_10er.Main
160     LocalTestLog% = nPreserveFileHandle%
162     gCurrentDocTest = frmTestClosure
163     gCurrentTestCase = cTestClosureWriteStatus
164     if bShowTable then
165         call CreateStatusTable2
166         call CreateStatusTable
167         call CreateDocState
168         LogTestResult( GetTestGlueDescription( gCurrentTestCase ), TRUE )
169             &apos; do this LogTestResult call before CreateSecondState, since the latter accesses (and displays) the result
170         call CreateSecondState
171         gOutputDoc.CurrentController.ViewCursor.JumpToFirstPage
172     Else
173         LogTestResult( GetTestGlueDescription( gCurrentTestCase ), TRUE )
174     End If
176     &apos; print the &apos;test complete&apos; marker
177     Print #LocalTestLog%, &quot;---&quot;
178     LocalTestLog% = 0
180     gOutputDoc.setModified( bWasModified )
182     Exit Sub
184 MainError:
185     If ( gCurrentTestCase = cLogfileFailed ) then
186         LogTestResult( &quot;&quot;, False )
187         Exit Sub
188     else
189         LogTestResult( &quot;testclosure &quot; + GetTestGlueDescription( gCurrentTestCase ), FALSE )
190         Close #LocalTestLog%
191         LocalTestLog = 0
192     End If
193 End Sub
195 Function GetTestGlueDescription( nTestCase as Integer )
196     Select Case ( nTestCase )
197         case cTestClosureSetupDoc
198             GetTestGlueDescription = &quot;setup&quot;
199         case cTestClosureWriteStatus
200             GetTestGlueDescription = &quot;write_status&quot;
201         case Else
202             GetTestGlueDescription = &quot;&quot;
203     End Select
204 End Function
206 Sub CreateStatusTable
207     dim tableHeaders(7) as string
208     tableHeaders(cStWriter) = &quot;Writer&quot;
209     tableHeaders(cStCalc) = &quot;Calc&quot;
210     tableHeaders(cStPraesentation) = &quot;Präsen- tation&quot;
211     tableHeaders(cStZeichnen) = &quot;Zeichn.&quot;
212     tableHeaders(cStChart) = &quot;Diagr.&quot;
213     tableHeaders(cStMath) = &quot;Math&quot;
214     tableHeaders(cStHTML) = &quot;HTML&quot;
215     tableHeaders(cStJava) = &quot;Java&quot;
217     dim tableRows(4) as string
218     tableRows(cDocNew) = &quot;new&quot;
219     tableRows(cDocSaveOpen8) = &quot;V8.0&quot;
220     tableRows(cDocClose) = &quot;close&quot;
221     tableRows(cDocMacros) = &quot;macros&quot;
223     aDoc = gOutputDoc
225     xText = aDoc.Text
226     xCursor = xText.createTextCursor()
228     xCursor.gotoStart(FALSE)
229     xCursor.GoRight (4, False)
230     SetParagraphBreak (xCursor)
231     xCursor.GoRight (1, False)
232     SetParagraphBreak (xCursor)
233     xCursor.GoRight (1, False)
235     table = aDoc.createInstance(&quot;com.sun.star.text.TextTable&quot;)
236     table.initialize(7,9)
237     table.Name = &quot;StTab1&quot;
238   table.BackColor = cCoGrey
239     xText.insertTextContent(xCursor, table, FALSE)
241     for i% = 0 to 7
242         tableCell = table.getCellByPosition( i% + 1, 0 )
243         tableCell.String = tableHeaders( i% )
244     next i%
246     for i% = LBound( tableRows ) to UBound( tableRows )
247         tableCell = table.getCellByPosition( 0, i% + 1 )
248       tableCell.String=tableRows(i%)
249     next i%
250 end Sub
252 Sub CreateStatusTable2
253     dim tableHeaders(4) as string
254     tableHeaders(0) = &quot;Database&quot;
255     tableHeaders(1) = &quot;&quot;
256     tableHeaders(2) = &quot;Extension&quot;
257     tableHeaders(3) = &quot;&quot;
258     tableHeaders(4) = &quot;Other&quot;
260     dim tableRows(5) as string
261     tableRows(cDBService ) = &quot;services&quot;
262     tableRows(cDBOpen ) = &quot;open&quot;
263     tableRows(cDBInsert ) = &quot;insert&quot;
264     tableRows(cDBDelete  ) = &quot;delete&quot;
265     tableRows(cDBSeek ) = &quot;seek&quot;
266     tableRows(cDBClose ) = &quot;close&quot;
268     dim tableRows2(2) as string
269     tableRows2(cEXTService ) = &quot;services&quot;
270     tableRows2(cEXTInstall ) = &quot;install&quot;
271     tableRows2(cEXTUninstall ) = &quot;uninstall&quot;
273     dim tableRows3(1) as string
274     tableRows3(cTestClosureSetupDoc ) = &quot;setup test&quot;
275     tableRows3(cTestClosureWriteStatus ) = &quot;write test result&quot;
277     aDoc = gOutputDoc
279     xText = aDoc.Text
280     xCursor = xText.createTextCursor()
282     xCursor.gotoStart(FALSE)
283     xCursor.GoRight (4, False)
284     SetParagraphBreak (xCursor)
285     SetParagraphBreak (xCursor)
286     xCursor.gotoEnd(FALSE)
288     table = aDoc.createInstance(&quot;com.sun.star.text.TextTable&quot;)
289     table.initialize(7,6)
290     table.Name = &quot;StTab2&quot;
291     table.BackColor = cCoGrey
293     xText.insertTextContent(xCursor, table, FALSE)
295     for i% = LBound( tableHeaders ) to UBound( tableHeaders )
296         tableCell = table.getCellByPosition( i% + 1, 0 )
297         tableCell.String = tableHeaders(i%)
298     next i%
300     for i% = LBound( tableRows ) to UBound( tableRows )
301         tableCell = table.getCellByPosition( 0, i% + 1 )
302       tableCell.String=tableRows(i%)
303     next i%
305     for i% = LBound( tableRows2 ) to UBound( tableRows2 )
306         tableCell = table.getCellByPosition( 2, i% + 1 )
307       tableCell.String=tableRows2(i%)
308     next i%
310     for i% = LBound( tableRows3 ) to UBound( tableRows3 )
311         tableCell = table.getCellByPosition( 4, i% + 1 )
312       tableCell.String=tableRows3(i%)
313     next i%
314 end Sub
317 Sub CreateDocState
318     aDoc = gOutputDoc
319     table = aDoc.TextTables.GetByIndex (1)
321     for j% = 0 to 7
322         for i% = 0 to 5
323             sRangeName = GetRangeName(j%, i%+1)
325             tableCursor = table.createCursorByCellName(sRangeName)
327             cName = tableCursor.getRangeName()
328             xCell = table.getCellByName(cName)
330             xCell.BackTransparent = False
332             If gErrorState (j%, i%) = cLogTrue Then
333                 xCell.BackColor = cCoGreen
334             else
335                 If gErrorState (j%, i%) = cLogFalse Then
336                     xCell.BackColor = cCoRed
337                     If ( gTestCaseAnnotations( j%, i% ) &lt;&gt; "" ) Then
338                         Dim annotation as Object
339                         annotation = aDoc.createInstance( &quot;com.sun.star.text.TextField.Annotation&quot; )
340                         annotation.Author = &quot;smoketest&quot;
341                         annotation.Content = gTestCaseAnnotations( j%, i% )
342                         xCell.insertTextContent( xCell, annotation, false )
343                     End If
344                 else
345                     xCell.BackColor = cCoGrey
346                 end If
347             end If
348         next i%
349     next j%
350 end Sub
352 Sub CreateSecondState
353     aDoc = gOutputDoc
354     table = aDoc.TextTables.GetByIndex (0)
356     Dim stateIndex(2) as Integer
357     stateIndex(0) = cStDataBase
358     stateIndex(1) = cStExtension
359     stateIndex(2) = cStTestGlue
361     Dim j as Integer
362     For j = LBound( stateIndex ) To UBound( stateIndex )
363         for i% = 1 to 6
364             tableCell = table.getCellByPosition( 2 * j + 1, i% )
365             tableCell.BackTransparent = False
367             if gErrorState( stateIndex(j), i% - 1 ) = cLogTrue then
368                 tableCell.BackColor = cCoGreen
369             else
370                 if gErrorState ( stateIndex(j), i% - 1 ) = cLogFalse then
371                     tableCell.BackColor = cCoRed
372                     If ( gTestCaseAnnotations( stateIndex(j), i% - 1 ) &lt;&gt; &quot;&quot; ) Then
373                         Dim annotation as Object
374                         annotation = aDoc.createInstance( &quot;com.sun.star.text.TextField.Annotation&quot; )
375                         annotation.Author = &quot;smoketest&quot;
376                         annotation.Content = gTestCaseAnnotations( stateIndex(j), i% - 1 )
377                         tableCell.insertTextContent( tableCell, annotation, false )
378                     End If
379                 else
380                     tableCell.BackColor = cCoGrey
381                 end If
382               end If
383         next i%
384     next j%
385 end Sub
387 Function GetRangeName (nColumn as integer, nRow as integer) as string
388     GetRangeName = chr (nColumn+66) + Trim(Str(nRow+1))
389 end Function
391 Sub LogTestResult( sTestCaseDescription as String, bSuccess as Boolean )
392     If ( gCurrentTestCase = cLogfileFailed ) Then
393         Dim sAnnotation as String
394         sAnnotation = &quot;creating logfile &apos;&quot; + GetLogFileName( gCurrentDocTest ) + &quot;&apos; failed&quot;
395         LogState( FALSE, sAnnotation, GlobalTestLog )
396         RecordTestCaseStatus( 0, FALSE, sAnnotation )
397     Else
398         bSuccess = RecordTestCaseStatus( gCurrentTestCase, bSuccess, sTestCaseDescription )
399         If ( LocalTestLog &lt;&gt; 0 ) Then
400             LogState( bSuccess, sTestCaseDescription, LocalTestLog )
401         EndIf
402         if ( GlobalTestLog &lt;&gt; 0 ) Then
403             LogState( bSuccess, sTestCaseDescription, GlobalTestLog )
404         EndIf
405     End If
406 End Sub
408 Function RecordTestCaseStatus( nAction as Integer, bState as Boolean, sFailureAnnotation as String ) as Boolean
409     Dim nStatusType as Integer
410     Dim nState as integer
411     nStatusType = GetStatusType( gCurrentDocTest )
412     If nStatusType = cStNone then Exit Function
414   If ( gErrorState( nStatusType, nAction ) = cLogFalse ) Then
415     &apos; don't overwrite a previous &quot;failed&quot; state for this test
416     bState = FALSE
417   End If
419     if bState then
420         nState = cLogTrue
421     else
422         nState = cLogFalse
423     end If
425     gErrorState (nStatusType, nAction) = nState
427     If ( nState = cLogFalse ) And ( sFailureAnnotation &lt;&gt; &quot;&quot; ) Then
428         if gTestCaseAnnotations(nStatusType, nAction) &lt;&gt; &quot;&quot; then
429             gTestCaseAnnotations(nStatusType, nAction) = _
430                 gTestCaseAnnotations(nStatusType, nAction) &amp; &quot;; &quot;
431         end if
432         gTestCaseAnnotations( nStatusType, nAction ) = gTestCaseAnnotations( nStatusType, nAction ) + sFailureAnnotation
433     End If
435     RecordTestCaseStatus = bState
436 End Function
438 Function GetStatusType (nDocType as Integer) as Integer
439     Select Case ( nDocType )
440         case frmWriter
441             GetStatusType = cStWriter &apos; text document
442         case frmCalc
443             GetStatusType = cStCalc &apos; spreadsheet document
444         case frmImpress
445             GetStatusType = cStPraesentation &apos; presentation
446         case frmDraw
447             GetStatusType = cStZeichnen &apos; drawing
448         case frmMath
449             GetStatusType = cStMath &apos; formula
450         case frmHyperText
451             GetStatusType = cStHTML &apos; HTML document
452         case frmChart
453             GetStatusType = cStChart &apos; chart
454         case frmJava
455             GetStatusType = cStJava &apos;Java
456         case frmTestClosure
457             GetStatusType = cStTestGlue &apos; test framework
458         case frmDataBase
459             GetStatusType = cStDataBase &apos;DataBase
460         case frmExtension
461             GetStatusType = cStExtension &apos;Extension
462         case else
463             GetStatusType = cStNone
464     end Select
465 end Function
467 Sub SetParagraphBreak (aCursor as Object)
468     aCursor.Text.InsertControlCharacter (aCursor, cParagraphBreak, True)
469 end Sub
471 Sub ClearDoc (aDoc as Object)
472     Dim aText as Object
473     Dim i%
474     for i%=1 to aDoc.TextTables.count
475         aDoc.TextTables.GetByIndex(0).dispose
476     next
478     aText = aDoc.Text.CreateTextCursor
479     aText.GotoStart (False)
480     aText.GoRight (3, False)
481     SetParagraphBreak (aText)
482     aText.GotoEnd (True)
483     aText.String=&quot;&quot;
484 end Sub
486 Sub ClearDocFull (aDoc as Object)
487     Dim aText as Object
488     Dim i%
489     for i%=1 to aDoc.TextTables.count
490         aDoc.TextTables.GetByIndex(0).dispose
491     next
493     aText = aDoc.Text.CreateTextCursor
494     aText.GotoStart (False)
495     aText.GotoEnd (True)
496     aText.String=&quot;&quot;
497 end Sub
499 Sub SetGlobalOptionsDialog ()
501     Dim oLibContainer As Object, oLib As Object
502     Dim oInputStreamProvider As Object
503     Dim oDialog As Object
505     Const sLibName = cTest10Modul
506     Const sDialogName = cOptionsDialogName
508     REM get library and input stream provider
509     oLibContainer = DialogLibraries
511     REM load the library
512     oLibContainer.loadLibrary( sLibName )
514     oLib = oLibContainer.getByName( sLibName )
515     oInputStreamProvider = oLib.getByName( sDialogName )
517     REM create dialog control
518     gOptionsDialog = CreateUnoDialog( oInputStreamProvider )
520 end Sub
522 Sub ShowOptionsDlg
524     call SetGlobalDoc
525     call SetGlobalOptionsDialog
526     call GetOptions
528     REM show the dialog
529     gOptionsDialog.execute()
531        &apos; now the dialog will run until a button is pressed
533        Select Case (gDlgState)
534            case cDlgOk
535                call SetOptions ()
536            case cDlgStartTest
537                call SetOptions ()
538                call StartTestByOptions ()
539     end Select
541     gOptionsDialog.dispose()
543 end Sub
545 Sub SetOptions
546     call SetGlobalDoc
547     SetUserFieldState (cUserFieldTestWriter, -(gOptionsDialog.getControl(&quot;cbWriterTest&quot;).getState), gOutputDoc)
548     SetUserFieldState (cUserFieldTestCalc, -(gOptionsDialog.getControl(&quot;cbCalcTest&quot;).getState), gOutputDoc)
549     SetUserFieldState (cUserFieldTestImpress, -(gOptionsDialog.getControl(&quot;cbImpressTest&quot;).getState), gOutputDoc)
550     SetUserFieldState (cUserFieldTestDraw, -(gOptionsDialog.getControl(&quot;cbDrawTest&quot;).getState), gOutputDoc)
551     SetUserFieldState (cUserFieldTestHTML, -(gOptionsDialog.getControl(&quot;cbHTMLTest&quot;).getState), gOutputDoc)
552     SetUserFieldState (cUserFieldTestMath, -(gOptionsDialog.getControl(&quot;cbMathTest&quot;).getState), gOutputDoc)
553     SetUserFieldState (cUserFieldTestChart, -(gOptionsDialog.getControl(&quot;cbChartTest&quot;).getState), gOutputDoc)
554     SetUserFieldState (cUserFieldTestJava, -(gOptionsDialog.getControl(&quot;cbJavaTest&quot;).getState), gOutputDoc)
555     SetUserFieldState (cUserFieldTestDatabase, -(gOptionsDialog.getControl(&quot;cbDatabaseTest&quot;).getState), gOutputDoc)
556     SetUserFieldState (cUserFieldTestExtension, -(gOptionsDialog.getControl(&quot;cbExtensionTest&quot;).getState), gOutputDoc)
557     SetUserFieldState (cUserFieldTestOpenSave8, -(gOptionsDialog.getControl(&quot;cbSaveOpen8Test&quot;).getState), gOutputDoc)
558     SetUserFieldState (cUserFieldTestMacros, -(gOptionsDialog.getControl(&quot;cbMacrosTest&quot;).getState), gOutputDoc)
559     SetUserFieldState (cUserFieldTestTerminateAfterTest, -(gOptionsDialog.getControl(&quot;cbTerminateAfterTest&quot;).getState), gOutputDoc)
560 end Sub
562 Sub GetOptions
563     call SetGlobalDoc
564     gOptionsDialog.getControl(&quot;cbWriterTest&quot;).setState( -( GetUserFieldState (cUserFieldTestWriter, gOutputDoc)))
565     gOptionsDialog.getControl(&quot;cbCalcTest&quot;).setState ( -( GetUserFieldState (cUserFieldTestCalc, gOutputDoc)))
566     gOptionsDialog.getControl(&quot;cbImpressTest&quot;).setState( -( GetUserFieldState (cUserFieldTestImpress, gOutputDoc)))
567     gOptionsDialog.getControl(&quot;cbDrawTest&quot;).setState( -( GetUserFieldState (cUserFieldTestDraw, gOutputDoc)))
568     gOptionsDialog.getControl(&quot;cbHTMLTest&quot;).setState( -( GetUserFieldState (cUserFieldTestHTML, gOutputDoc)))
569     gOptionsDialog.getControl(&quot;cbMathTest&quot;).setState( -( GetUserFieldState (cUserFieldTestMath, gOutputDoc)))
570     gOptionsDialog.getControl(&quot;cbChartTest&quot;).setState( -( GetUserFieldState (cUserFieldTestChart, gOutputDoc)))
571     gOptionsDialog.getControl(&quot;cbJavaTest&quot;).setState( -( GetUserFieldState (cUserFieldTestJava, gOutputDoc)))
572     gOptionsDialog.getControl(&quot;cbDatabaseTest&quot;).setState( -( GetUserFieldState (cUserFieldTestDatabase, gOutputDoc)))
573     gOptionsDialog.getControl(&quot;cbExtensionTest&quot;).setState( -( GetUserFieldState (cUserFieldTestExtension, gOutputDoc)))
574     gOptionsDialog.getControl(&quot;cbSaveOpen8Test&quot;).setState( -( GetUserFieldState (cUserFieldTestOpenSave8, gOutputDoc)))
575     gOptionsDialog.getControl(&quot;cbMacrosTest&quot;).setState( -( GetUserFieldState (cUserFieldTestMacros, gOutputDoc)))
576     gOptionsDialog.getControl(&quot;cbTerminateAfterTest&quot;).setState( -( GetUserFieldState (cUserFieldTestTerminateAfterTest, gOutputDoc)))
577 End Sub
579 Sub ReadOptions
580     call SetGlobalDoc
581     bMakeWriterTest = GetUserFieldState (cUserFieldTestWriter, gOutputDoc)
582     bMakeCalcTest = GetUserFieldState (cUserFieldTestCalc, gOutputDoc)
583     bMakeImpressTest = GetUserFieldState (cUserFieldTestImpress, gOutputDoc)
584     bMakeDrawTest = GetUserFieldState (cUserFieldTestDraw, gOutputDoc)
585     bMakeHTMLTest = GetUserFieldState (cUserFieldTestHTML, gOutputDoc)
586     bMakeMathTest = GetUserFieldState (cUserFieldTestMath, gOutputDoc)
587     bMakeChartTest = GetUserFieldState (cUserFieldTestChart, gOutputDoc)
588     bMakeJavaTest = GetUserFieldState (cUserFieldTestJava, gOutputDoc)
589     bMakeDBTest = GetUserFieldState (cUserFieldTestDatabase, gOutputDoc)
590     bMakeExtensionTest = GetUserFieldState (cUserFieldTestExtension, gOutputDoc)
591     bMakeSaveOpen8Test = GetUserFieldState (cUserFieldTestOpenSave8, gOutputDoc)
592     bMakeMacrosTest = GetUserFieldState (cUserFieldTestMacros, gOutputDoc)
593     bMakeTerminateAfterTest = GetUserFieldState (cUserFieldTestTerminateAfterTest, gOutputDoc)
594 end Sub
596 Sub SetDefaultOptions
597     bMakeWriterTest = true
598     bMakeCalcTest = true
599     bMakeImpressTest = true
600     bMakeDrawTest = true
601     bMakeHTMLTest = true
602     bMakeMathTest = true
603     bMakeChartTest = true
604     if Environ(&quot;ENABLE_JAVA&quot;) = &quot;&quot; then
605         bMakeJavaTest = false
606         bMakeDBTest = false
607         bMakeExtensionTest = false
608     else
609         bMakeJavaTest = true
610         bMakeDBTest = true
611         bMakeExtensionTest = true
612     End If
613     bMakeSaveOpen8Test = true
614     bMakeMacrosTest = true
615     bMakeTerminateAfterTest = false
616 end Sub
618 Sub StartTestByOptions
619     bShowTable = true
620     call ReadOptions
621     call Main
622     if bMakeTerminateAfterTest then
623         ClearDocFull (gOutputDoc)
624         gOutputDoc.dispose
625         &apos;StarDesktop.Terminate
627         &apos;EnableReschedule( false )
628         &apos;DispatchSlot( 5300 )
629         stop
630     End If
631 end Sub
633 Function StartTestWithDefaultOptions
634     bShowTable = false
635     call SetDefaultOptions
636     call Main
637     dim component(cMaxErrorStates) as string
638     component(cStWriter) = &quot;Writer&quot;
639     component(cStCalc) = &quot;Calc&quot;
640     component(cStPraesentation) = &quot;Impress&quot;
641     component(cStZeichnen) = &quot;Draw&quot;
642     component(cStChart) = &quot;Chart&quot;
643     component(cStMath) = &quot;Math&quot;
644     component(cStHTML) = &quot;HTML&quot;
645     component(cStJava) = &quot;Java&quot;
646     component(cStDataBase) = &quot;Base&quot;
647     component(cStExtension) = &quot;Extensions&quot;
648     dim action(4) as string
649     action(cDocNew) = &quot;new&quot;
650     action(cDocSaveOpen8) = &quot;V8.0&quot;
651     action(cDocClose) = &quot;close&quot;
652     action(cDocMacros) = &quot;macros&quot;
653     dim baseAction(5) as string
654     baseAction(cDBService) = &quot;services&quot;
655     baseAction(cDBOpen) = &quot;open&quot;
656     baseAction(cDBInsert) = &quot;insert&quot;
657     baseAction(cDBDelete) = &quot;delete&quot;
658     baseAction(cDBSeek) = &quot;seek&quot;
659     baseAction(cDBClose) = &quot;close&quot;
660     dim extAction(2) as string
661     extAction(cEXTService) = &quot;services&quot;
662     extAction(cEXTInstall) = &quot;install&quot;
663     extAction(cEXTUninstall) = &quot;uninstall&quot;
664     dim result as string
665     for i = 0 to cMaxErrorStates
666         for j = 0 to 5
667             if gErrorState(i, j) = cLogFalse then
668                 result = result &amp; &quot; &quot; &amp; component(i) &amp; &quot;:&quot;
669                 if i = cStDataBase then
670                     result = result &amp; baseAction(j)
671                 else if i = cStExtension then
672                     result = result &amp; extAction(j)
673                 else
674                     result = result &amp; action(j)
675                 end if
676                 end if
677                 if gTestCaseAnnotations(i, j) &lt;&gt; &quot;&quot; then
678                     result = result &amp; &quot;(&quot; &amp; _
679                         gTestCaseAnnotations(i, j) &amp; &quot;)&quot;
680                 end if
681             end if
682         next j
683     next i
684     StartTestWithDefaultOptions = result
685 end Function
687 Sub DispatchSlot(SlotID as Integer)
688     Dim oArg() as new com.sun.star.beans.PropertyValue
689     Dim oUrl as new com.sun.star.util.URL
690     Dim oTrans as Object
691     Dim oDisp as Object
693     oTrans = createUNOService(&quot;com.sun.star.util.URLTransformer&quot;)
694     oUrl.Complete = &quot;slot:&quot; &amp; CStr(SlotID)
695     oTrans.parsestrict(oUrl)
697     oDisp = StarDesktop.queryDispatch(oUrl, &quot;_self&quot;, 0)
698     oDisp.dispatch(oUrl, oArg())
699 End Sub
701 Sub LoadLibrary( LibName As String )
703     dim args(1)
704     dim arg as new com.sun.star.beans.PropertyValue
705     arg.Name = &quot;LibraryName&quot;
706     arg.Value = LibName
707     args(0) = arg
709     dim url as new com.sun.star.util.URL
710     dim trans as object
711     trans = createUnoService(&quot;com.sun.star.util.URLTransformer&quot; )
712     url.Complete = &quot;slot:6517&quot;
713     trans.parsestrict( url )
715     dim disp as object
716     disp = StarDesktop.currentFrame.queryDispatch( url, &quot;&quot;, 0 )
717     disp.dispatch( url, args() )
719 End Sub
721 Sub ExecuteSlot( SlotNr As String, oDoc as Object )
722     dim args()
723     dim url as new com.sun.star.util.URL
724     dim trans as object
725     dim disp as object
727     trans = createUnoService(&quot;com.sun.star.util.URLTransformer&quot; )
728     url.Complete = &quot;slot:&quot; + SlotNr
729     trans.parsestrict( url )
731     disp = oDoc.CurrentController.Frame.queryDispatch( url, &quot;&quot;, 0 )
732     disp.dispatch( url, args() )
734 End Sub
736 Sub DelAllUserFields (aDoc as Object)
737     Dim aFieldType as Object
738     Dim aElements as Variant
739     Dim i%
740     Dim aFieldMasters, aFieldMaster as Object
741     Dim sElement$
742     aFieldMasters = aDoc.TextFieldMasters
743     aElements = aFieldMasters.ElementNames
744     for i = 0 to UBound(aElements)
745         sElement$ = aElements(i)
746         if 0 &lt;&gt; instr(sElement$, cUnoUserField ) then
747             aFieldMaster = aFieldMasters.GetByName(sElement$)
748             aFieldMaster.Dispose
749         endif
750     next
751 end Sub
753 Function GetUserFieldState (sName as String, aDoc as Object) as boolean
754     Dim sFieldText as String
755     Dim bState as boolean
756     sFieldText = ReadUserField (sName, aDoc)
758     if LCase(sFieldText) = cYes then
759         bState = true
760     else
761         bState = false
762     end IF
764     GetUserFieldState = bState
765 end Function
767 Sub SetUserFieldState (sName as String, nState as boolean, aDoc as Object)
768     Dim sFieldText as String
770     sFieldText = cNo &apos;default
772     Select case nState
773         case true
774             sFieldText = cYes
775         case false
776             sFieldText = cNo
777     end Select
779     WriteUserField (sFieldText, sName, aDoc)
780 end Sub
782 Function ReadUserField(sFieldName as String, aDoc as Object) as String
783     Dim aMasters as Object
784     aMasters = aDoc.TextFieldMasters
785     if aMasters.HasByName (cUnoUserField+cUnoSeparator+sFieldName) then
786         ReadUserField = aMasters.GetByName (cUnoUserField+cUnoSeparator+sFieldName).Content
787     else
788         ReadUserField = &quot;&quot;
789     end If
790 End Function
792 Sub WriteUserField(sValue as String, sFieldName as String, aDoc as Object, optional aCursor as Object)
793     Dim aMasters, aUserField, aTxtCursor as Object
794     aMasters = aDoc.TextFieldMasters
795     if aMasters.HasByName (cUnoUserField+cUnoSeparator+sFieldName) then
796         aUserField = aMasters.GetByName (cUnoUserField+cUnoSeparator+sFieldName)
797     else
798         aUserField = aDoc.CreateInstance (cUnoUserField)
799         aUserField.Name = sFieldName
800     end if
801     aUserField.Content = sValue
802 End Sub
804 Sub WriteExtUserField(nIndex as Integer, aCursor as Object, aDoc as Object)
805     Dim aUserField as Object
806     aUserField = aDoc.CreateInstance (cUnoExtUserField)
807     aUserField.UserDataType = nIndex
808     aCursor.Text.InsertTextContent (aCursor, aUserField, True)
809     aUserField.Fix = True
810 End Sub
811 </script:module>