blob: c2d70d375a46b9610fe77c3c43e6a9a015d82069 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--***********************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
***********************************************************-->
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Global" script:language="StarBasic">REM ***** BASIC *****
const cMaxErrorStates = 14
const cCoGreen = 4057917, cCoRed = 16711680, cCoGrey = 12632256
const cParagraphBreak = 0
global const cExtensionFileName = &quot;TestExtension.oxt&quot;
global const cDocNew = 0, cDocSaveOpen8 = 1, cDocSaveOpenXML = 2, cDocClose = 3
global const cDBService = 0, cDBOpen = 1, cDBInsert = 2, cDBDelete = 3, cDBSeek = 4, cDBClose = 5
global const cEXTService = 0, cEXTInstall = 1, cEXTUninstall = 2
global const cTestClosureSetupDoc = 0, cTestClosureWriteStatus = 1
global const cLogfileFailed = 255
global const cStWriter = 0, cStCalc = 1, cStPraesentation = 2, cStZeichnen = 3
global const cStHTML = 6, cStChart = 4, cStJava = 7
global const cStMath = 5, cStDataBase = 9
global const cStExtension = 11
global const cStTestGlue = 12
global const cStNone = -1
global const cFlt8 = 0, cFlt50 = 32, cFltNewDoc = 64, cFltXML = 128
global const frmWriter = 1, frmCalc = 2, frmImpress = 4
global const frmMath = 5, frmChart = 7, frmHyperText = 8, frmDraw = 9
global const frmDataBase = 10, frmJava = 13
global const frmExtension = 14
global const frmTestClosure = 15
Global gCurrentDocTest As Integer
Global gCurrentTestCase As Integer
global const cLogUnknown = 0, cLogFalse = 1, cLogTrue = 2
&apos;UserFieldKennungen
Global const cYes = &quot;y&quot;, cNo = &quot;n&quot;
Global const cStateNo = 0, cStateYes = 1
&apos;Feldtypen
Global const cFtExtUser = 21, cFtPageNum = 5, cFtStatistic = 8, cFtDateTime = 27, cFtDatabase = 31
&apos;UnoStrings
Global const cUnoSeparator = &quot;.&quot;
Global const cUnoPrefix = &quot;com.sun.star.&quot;
Global const cUnoUserField = cUnoPrefix + &quot;text.FieldMaster.User&quot;
Global const cUnoExtUserField = cUnoPrefix + &quot;text.TextField.ExtendedUser&quot;
Global const cUnoMasterDataBase = cUnoPrefix + &quot;text.FieldMaster.Database&quot;
Global const cUnoDataBase = cUnoPrefix + &quot;text.TextField.Database&quot;
Global const cUnoDateTime = cUnoPrefix + &quot;text.TextField.DateTime&quot;
Global const cUnoTextGraphi2 = cUnoPrefix + &quot;text.Graphic&quot;
Global const cUnoJavaLoader = cUnoPrefix + &quot;loader.Java&quot;
Global const cUnoDatabaseContext = cUnoPrefix + &quot;sdb.DatabaseContext&quot;
Global const cUnoRowSet = cUnoPrefix + &quot;sdb.RowSet&quot;
Global const cUnoSmoketestTestExtension = cUnoPrefix + &quot;comp.smoketest.TestExtension&quot;
Global const cUnoSmoketestCommandEnvironment = cUnoPrefix + &quot;deployment.test.SmoketestCommandEnvironment&quot;
Global const cExtensionManager = cUnoPrefix + &quot;deployment.ExtensionManager&quot;
&apos;UserFieldNames
Global const cUserFieldTestWriter = &quot;Writer&quot;, cUserFieldTestCalc = &quot;Calc&quot;, cUserFieldTestImpress = &quot;Impress&quot;
Global const cUserFieldTestDraw = &quot;Draw&quot;, cUserFieldTestMath = &quot;Math&quot;, cUserFieldTestChart = &quot;Chart&quot;
Global const cUserFieldTestHTML = &quot;HTML&quot;, cUserFieldTestJava = &quot;Java&quot;, cUserFieldTestDatabase = &quot;Database&quot;
Global const cUserFieldTestExtension = &quot;Extension&quot;
Global const cUserFieldTestOpenSaveXML = &quot;SaveOpenXML&quot;
Global const cUserFieldTestTerminateAfterTest = &quot;Terminate&quot;, cUserFieldTestOpenSave8 = &quot;SaveOpen8&quot;
Global const cOptionsDialogName = &quot;OptionsDlg&quot;, cTest10Modul = &quot;Standard&quot;
Global const cDlgCancel = 1, cDlgOk = 0, cDlgStartTest = 2
global gErrorState (cMaxErrorStates, 5) as integer
Global gTestCaseAnnotations( cMaxErrorStates, 5 ) As String
global gOutputDoc as Object
global gOutputDocNotUno as Object
global gOptionsDialog as Object
Global bMakeWriterTest as boolean, bMakeCalcTest as boolean, bMakeImpressTest as boolean
Global bMakeDrawTest as Boolean, bMakeMathTest as boolean, bMakeChartTest as boolean
Global bMakeHTMLTest as boolean, bMakeJavaTest as boolean, bMakeDBTest as boolean
Global bMakeExtensionTest as boolean
Global bMakeSaveOpenXMLTest as boolean
Global bMakeTerminateAfterTest as boolean, bShowTable as boolean
Global bMakeSaveOpen8Test as boolean
global sExtensionURL as string
Dim gDlgState as Integer
Sub SetGlobalDoc
gOutputDoc = ThisComponent
end Sub
Sub ClearStatus
for j% = 0 to cMaxErrorStates
for i% = 0 to 5
gErrorState (j%, i%) = cLogUnknown
gTestCaseAnnotations( J%, i% ) = ""
next i%
next j%
end Sub
Sub ClearAllText
call SetGlobalDoc
call ClearDoc (gOutputDoc)
call ClearStatus
end Sub
Sub AssertionHandler( sMessage as String )
LogTestResult( &quot;assertion caught: &quot; + sMessage, FALSE )
End Sub
Sub Main
On Local Error Goto MainError
gCurrentDocTest = frmTestClosure
gCurrentTestCase = cLogfileFailed
DeleteAllSavedFiles()
DeleteAllLogFiles()
SetupWorkPath()
if GetSystem (sWorkPath) = &quot;windows&quot; then
sWorkPath = ConvertPathToWin (sWorkPath)
end if
LocalTestLog% = OpenLogDat( GetLogFileName( gCurrentDocTest ) )
gCurrentTestCase = cTestClosureSetupDoc
CaptureAssertions( "AssertionHandler" )
call SetGlobalDoc
Dim bWasModified as Boolean
bWasModified = gOutputDoc.isModified()
if bShowTable then
call ClearDoc (gOutputDoc)
end If
call ClearStatus
LogTestResult( GetTestGlueDescription( gCurrentTestCase ), TRUE )
Dim nPreserveFileHandle%
nPreserveFileHandle% = LocalTestLog%
Call Test_10er.Main
LocalTestLog% = nPreserveFileHandle%
gCurrentDocTest = frmTestClosure
gCurrentTestCase = cTestClosureWriteStatus
if bShowTable then
call CreateStatusTable2
call CreateStatusTable
call CreateDocState
LogTestResult( GetTestGlueDescription( gCurrentTestCase ), TRUE )
&apos; do this LogTestResult call before CreateSecondState, since the latter accesses (and displays) the result
call CreateSecondState
gOutputDoc.CurrentController.ViewCursor.JumpToFirstPage
Else
LogTestResult( GetTestGlueDescription( gCurrentTestCase ), TRUE )
End If
&apos; print the &apos;test complete&apos; marker
Print #LocalTestLog%, &quot;---&quot;
LocalTestLog% = 0
gOutputDoc.setModified( bWasModified )
CaptureAssertions( &quot;&quot; )
Exit Sub
MainError:
If ( gCurrentTestCase = cLogfileFailed ) then
LogTestResult( &quot;&quot;, False )
Exit Sub
else
LogTestResult( &quot;testclosure &quot; + GetTestGlueDescription( gCurrentTestCase ), FALSE )
Close #LocalTestLog%
LocalTestLog = 0
End If
End Sub
Function GetTestGlueDescription( nTestCase as Integer )
Select Case ( nTestCase )
case cTestClosureSetupDoc
GetTestGlueDescription = &quot;setup&quot;
case cTestClosureWriteStatus
GetTestGlueDescription = &quot;write_status&quot;
case Else
GetTestGlueDescription = &quot;&quot;
End Select
End Function
Sub CreateStatusTable
dim tableHeaders(7) as string
tableHeaders(cStWriter) = &quot;Writer&quot;
tableHeaders(cStCalc) = &quot;Calc&quot;
tableHeaders(cStPraesentation) = &quot;Präsen- tation&quot;
tableHeaders(cStZeichnen) = &quot;Zeichn.&quot;
tableHeaders(cStChart) = &quot;Diagr.&quot;
tableHeaders(cStMath) = &quot;Math&quot;
tableHeaders(cStHTML) = &quot;HTML&quot;
tableHeaders(cStJava) = &quot;Java&quot;
dim tableRows(3) as string
tableRows(cDocNew) = &quot;new&quot;
tableRows(cDocSaveOpen8) = &quot;V8.0&quot;
tableRows(cDocSaveOpenXML) = &quot;XML&quot;
tableRows(cDocClose) = &quot;close&quot;
aDoc = gOutputDoc
xText = aDoc.Text
xCursor = xText.createTextCursor()
xCursor.gotoStart(FALSE)
xCursor.GoRight (4, False)
SetParagraphBreak (xCursor)
xCursor.GoRight (1, False)
SetParagraphBreak (xCursor)
xCursor.GoRight (1, False)
table = aDoc.createInstance(&quot;com.sun.star.text.TextTable&quot;)
table.initialize(5,9)
table.Name = &quot;StTab1&quot;
table.BackColor = cCoGrey
xText.insertTextContent(xCursor, table, FALSE)
for i% = 0 to 7
tableCell = table.getCellByPosition( i% + 1, 0 )
tableCell.String = tableHeaders( i% )
next i%
for i% = LBound( tableRows ) to UBound( tableRows )
tableCell = table.getCellByPosition( 0, i% + 1 )
tableCell.String=tableRows(i%)
next i%
end Sub
Sub CreateStatusTable2
dim tableHeaders(4) as string
tableHeaders(0) = &quot;Database&quot;
tableHeaders(1) = &quot;&quot;
tableHeaders(2) = &quot;Extension&quot;
tableHeaders(3) = &quot;&quot;
tableHeaders(4) = &quot;Other&quot;
dim tableRows(5) as string
tableRows(cDBService ) = &quot;services&quot;
tableRows(cDBOpen ) = &quot;open&quot;
tableRows(cDBInsert ) = &quot;insert&quot;
tableRows(cDBDelete ) = &quot;delete&quot;
tableRows(cDBSeek ) = &quot;seek&quot;
tableRows(cDBClose ) = &quot;close&quot;
dim tableRows2(2) as string
tableRows2(cEXTService ) = &quot;services&quot;
tableRows2(cEXTInstall ) = &quot;install&quot;
tableRows2(cEXTUninstall ) = &quot;uninstall&quot;
dim tableRows3(1) as string
tableRows3(cTestClosureSetupDoc ) = &quot;setup test&quot;
tableRows3(cTestClosureWriteStatus ) = &quot;write test result&quot;
aDoc = gOutputDoc
xText = aDoc.Text
xCursor = xText.createTextCursor()
xCursor.gotoStart(FALSE)
xCursor.GoRight (4, False)
SetParagraphBreak (xCursor)
SetParagraphBreak (xCursor)
xCursor.gotoEnd(FALSE)
table = aDoc.createInstance(&quot;com.sun.star.text.TextTable&quot;)
table.initialize(7,6)
table.Name = &quot;StTab2&quot;
table.BackColor = cCoGrey
xText.insertTextContent(xCursor, table, FALSE)
for i% = LBound( tableHeaders ) to UBound( tableHeaders )
tableCell = table.getCellByPosition( i% + 1, 0 )
tableCell.String = tableHeaders(i%)
next i%
for i% = LBound( tableRows ) to UBound( tableRows )
tableCell = table.getCellByPosition( 0, i% + 1 )
tableCell.String=tableRows(i%)
next i%
for i% = LBound( tableRows2 ) to UBound( tableRows2 )
tableCell = table.getCellByPosition( 2, i% + 1 )
tableCell.String=tableRows2(i%)
next i%
for i% = LBound( tableRows3 ) to UBound( tableRows3 )
tableCell = table.getCellByPosition( 4, i% + 1 )
tableCell.String=tableRows3(i%)
next i%
end Sub
Sub CreateDocState
aDoc = gOutputDoc
table = aDoc.TextTables.GetByIndex (1)
for j% = 0 to 7
for i% = 0 to 3
sRangeName = GetRangeName(j%, i%+1)
tableCursor = table.createCursorByCellName(sRangeName)
cName = tableCursor.getRangeName()
xCell = table.getCellByName(cName)
xCell.BackTransparent = False
If gErrorState (j%, i%) = cLogTrue Then
xCell.BackColor = cCoGreen
else
If gErrorState (j%, i%) = cLogFalse Then
xCell.BackColor = cCoRed
If ( gTestCaseAnnotations( j%, i% ) &lt;&gt; "" ) Then
Dim annotation as Object
annotation = aDoc.createInstance( &quot;com.sun.star.text.TextField.Annotation&quot; )
annotation.Author = &quot;smoketest&quot;
annotation.Content = gTestCaseAnnotations( j%, i% )
xCell.insertTextContent( xCell, annotation, false )
End If
else
xCell.BackColor = cCoGrey
end If
end If
next i%
next j%
end Sub
Sub CreateSecondState
aDoc = gOutputDoc
table = aDoc.TextTables.GetByIndex (0)
Dim stateIndex(2) as Integer
stateIndex(0) = cStDataBase
stateIndex(1) = cStExtension
stateIndex(2) = cStTestGlue
Dim j as Integer
For j = LBound( stateIndex ) To UBound( stateIndex )
for i% = 1 to 6
tableCell = table.getCellByPosition( 2 * j + 1, i% )
tableCell.BackTransparent = False
if gErrorState( stateIndex(j), i% - 1 ) = cLogTrue then
tableCell.BackColor = cCoGreen
else
if gErrorState ( stateIndex(j), i% - 1 ) = cLogFalse then
tableCell.BackColor = cCoRed
If ( gTestCaseAnnotations( stateIndex(j), i% - 1 ) &lt;&gt; &quot;&quot; ) Then
Dim annotation as Object
annotation = aDoc.createInstance( &quot;com.sun.star.text.TextField.Annotation&quot; )
annotation.Author = &quot;smoketest&quot;
annotation.Content = gTestCaseAnnotations( stateIndex(j), i% - 1 )
tableCell.insertTextContent( tableCell, annotation, false )
End If
else
tableCell.BackColor = cCoGrey
end If
end If
next i%
next j%
end Sub
Function GetRangeName (nColumn as integer, nRow as integer) as string
GetRangeName = chr (nColumn+66) + Trim(Str(nRow+1))
end Function
Sub LogTestResult( sTestCaseDescription as String, bSuccess as Boolean )
If ( gCurrentTestCase = cLogfileFailed ) Then
Dim sAnnotation as String
sAnnotation = &quot;creating logfile &apos;&quot; + GetLogFileName( gCurrentDocTest ) + &quot;&apos; failed&quot;
LogState( FALSE, sAnnotation, GlobalTestLog )
RecordTestCaseStatus( 0, FALSE, sAnnotation )
Else
bSuccess = RecordTestCaseStatus( gCurrentTestCase, bSuccess, sTestCaseDescription )
If ( LocalTestLog &lt;&gt; 0 ) Then
LogState( bSuccess, sTestCaseDescription, LocalTestLog )
EndIf
if ( GlobalTestLog &lt;&gt; 0 ) Then
LogState( bSuccess, sTestCaseDescription, GlobalTestLog )
EndIf
End If
End Sub
Function RecordTestCaseStatus( nAction as Integer, bState as Boolean, sFailureAnnotation as String ) as Boolean
Dim nStatusType as Integer
Dim nState as integer
nStatusType = GetStatusType( gCurrentDocTest )
If nStatusType = cStNone then Exit Function
If ( gErrorState( nStatusType, nAction ) = cLogFalse ) Then
&apos; don't overwrite a previous &quot;failed&quot; state for this test
bState = FALSE
End If
if bState then
nState = cLogTrue
else
nState = cLogFalse
end If
gErrorState (nStatusType, nAction) = nState
If ( nState = cLogFalse ) And ( sFailureAnnotation &lt;&gt; &quot;&quot; ) Then
gTestCaseAnnotations( nStatusType, nAction ) = gTestCaseAnnotations( nStatusType, nAction ) + sFailureAnnotation + chr(13)
End If
RecordTestCaseStatus = bState
End Function
Function GetStatusType (nDocType as Integer) as Integer
Select Case ( nDocType )
case frmWriter
GetStatusType = cStWriter &apos; text document
case frmCalc
GetStatusType = cStCalc &apos; spreadsheet document
case frmImpress
GetStatusType = cStPraesentation &apos; presentation
case frmDraw
GetStatusType = cStZeichnen &apos; drawing
case frmMath
GetStatusType = cStMath &apos; formula
case frmHyperText
GetStatusType = cStHTML &apos; HTML document
case frmChart
GetStatusType = cStChart &apos; chart
case frmJava
GetStatusType = cStJava &apos;Java
case frmTestClosure
GetStatusType = cStTestGlue &apos; test framework
case frmDataBase
GetStatusType = cStDataBase &apos;DataBase
case frmExtension
GetStatusType = cStExtension &apos;Extension
case else
GetStatusType = cStNone
end Select
end Function
Sub SetParagraphBreak (aCursor as Object)
aCursor.Text.InsertControlCharacter (aCursor, cParagraphBreak, True)
end Sub
Sub ClearDoc (aDoc as Object)
Dim aText as Object
Dim i%
for i%=1 to aDoc.TextTables.count
aDoc.TextTables.GetByIndex(0).dispose
next
aText = aDoc.Text.CreateTextCursor
aText.GotoStart (False)
aText.GoRight (3, False)
SetParagraphBreak (aText)
aText.GotoEnd (True)
aText.String=&quot;&quot;
end Sub
Sub ClearDocFull (aDoc as Object)
Dim aText as Object
Dim i%
for i%=1 to aDoc.TextTables.count
aDoc.TextTables.GetByIndex(0).dispose
next
aText = aDoc.Text.CreateTextCursor
aText.GotoStart (False)
aText.GotoEnd (True)
aText.String=&quot;&quot;
end Sub
Sub SetGlobalOptionsDialog ()
Dim oLibContainer As Object, oLib As Object
Dim oInputStreamProvider As Object
Dim oDialog As Object
Const sLibName = cTest10Modul
Const sDialogName = cOptionsDialogName
REM get library and input stream provider
oLibContainer = DialogLibraries
REM load the library
oLibContainer.loadLibrary( sLibName )
oLib = oLibContainer.getByName( sLibName )
oInputStreamProvider = oLib.getByName( sDialogName )
REM create dialog control
gOptionsDialog = CreateUnoDialog( oInputStreamProvider )
end Sub
Sub ShowOptionsDlg
call SetGlobalDoc
call SetGlobalOptionsDialog
call GetOptions
REM show the dialog
gOptionsDialog.execute()
&apos; jetzt läuft der Dialog, bis ein Button gedrückt wird
Select Case (gDlgState)
case cDlgOk
call SetOptions ()
case cDlgStartTest
call SetOptions ()
call StartTestByOptions ()
end Select
gOptionsDialog.dispose()
end Sub
Sub SetOptions
call SetGlobalDoc
SetUserFieldState (cUserFieldTestWriter, -(gOptionsDialog.getControl(&quot;cbWriterTest&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestCalc, -(gOptionsDialog.getControl(&quot;cbCalcTest&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestImpress, -(gOptionsDialog.getControl(&quot;cbImpressTest&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestDraw, -(gOptionsDialog.getControl(&quot;cbDrawTest&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestHTML, -(gOptionsDialog.getControl(&quot;cbHTMLTest&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestMath, -(gOptionsDialog.getControl(&quot;cbMathTest&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestChart, -(gOptionsDialog.getControl(&quot;cbChartTest&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestJava, -(gOptionsDialog.getControl(&quot;cbJavaTest&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestDatabase, -(gOptionsDialog.getControl(&quot;cbDatabaseTest&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestExtension, -(gOptionsDialog.getControl(&quot;cbExtensionTest&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestOpenSaveXML, -(gOptionsDialog.getControl(&quot;cbSaveOpenXMLTest&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestOpenSave8, -(gOptionsDialog.getControl(&quot;cbSaveOpen8Test&quot;).getState), gOutputDoc)
SetUserFieldState (cUserFieldTestTerminateAfterTest, -(gOptionsDialog.getControl(&quot;cbTerminateAfterTest&quot;).getState), gOutputDoc)
end Sub
Sub GetOptions
call SetGlobalDoc
gOptionsDialog.getControl(&quot;cbWriterTest&quot;).setState( -( GetUserFieldState (cUserFieldTestWriter, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbCalcTest&quot;).setState ( -( GetUserFieldState (cUserFieldTestCalc, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbImpressTest&quot;).setState( -( GetUserFieldState (cUserFieldTestImpress, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbDrawTest&quot;).setState( -( GetUserFieldState (cUserFieldTestDraw, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbHTMLTest&quot;).setState( -( GetUserFieldState (cUserFieldTestHTML, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbMathTest&quot;).setState( -( GetUserFieldState (cUserFieldTestMath, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbChartTest&quot;).setState( -( GetUserFieldState (cUserFieldTestChart, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbJavaTest&quot;).setState( -( GetUserFieldState (cUserFieldTestJava, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbDatabaseTest&quot;).setState( -( GetUserFieldState (cUserFieldTestDatabase, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbExtensionTest&quot;).setState( -( GetUserFieldState (cUserFieldTestExtension, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbSaveOpenXMLTest&quot;).setState( -( GetUserFieldState (cUserFieldTestOpenSaveXML, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbSaveOpen8Test&quot;).setState( -( GetUserFieldState (cUserFieldTestOpenSave8, gOutputDoc)))
gOptionsDialog.getControl(&quot;cbTerminateAfterTest&quot;).setState( -( GetUserFieldState (cUserFieldTestTerminateAfterTest, gOutputDoc)))
End Sub
Sub ReadOptions
call SetGlobalDoc
bMakeWriterTest = GetUserFieldState (cUserFieldTestWriter, gOutputDoc)
bMakeCalcTest = GetUserFieldState (cUserFieldTestCalc, gOutputDoc)
bMakeImpressTest = GetUserFieldState (cUserFieldTestImpress, gOutputDoc)
bMakeDrawTest = GetUserFieldState (cUserFieldTestDraw, gOutputDoc)
bMakeHTMLTest = GetUserFieldState (cUserFieldTestHTML, gOutputDoc)
bMakeMathTest = GetUserFieldState (cUserFieldTestMath, gOutputDoc)
bMakeChartTest = GetUserFieldState (cUserFieldTestChart, gOutputDoc)
bMakeJavaTest = GetUserFieldState (cUserFieldTestJava, gOutputDoc)
bMakeDBTest = GetUserFieldState (cUserFieldTestDatabase, gOutputDoc)
bMakeExtensionTest = GetUserFieldState (cUserFieldTestExtension, gOutputDoc)
bMakeSaveOpenXMLTest = GetUserFieldState (cUserFieldTestOpenSaveXML, gOutputDoc)
bMakeSaveOpen8Test = GetUserFieldState (cUserFieldTestOpenSave8, gOutputDoc)
bMakeTerminateAfterTest = GetUserFieldState (cUserFieldTestTerminateAfterTest, gOutputDoc)
end Sub
Sub SetDefaultOptions
bMakeWriterTest = true
bMakeCalcTest = true
bMakeImpressTest = true
bMakeDrawTest = true
bMakeHTMLTest = true
bMakeMathTest = true
bMakeChartTest = true
if Environ(&quot;SOLAR_JAVA&quot;) = &quot;&quot; then
bMakeJavaTest = false
bMakeDBTest = false
bMakeExtensionTest = false
else
bMakeJavaTest = true
bMakeDBTest = true
bMakeExtensionTest = true
End If
bMakeSaveOpenXMLTest = true
REM Disable StarOffice 5.0 tests in case binfilter has not been included
bMakeSaveOpen8Test = true
bMakeTerminateAfterTest = false
end Sub
Sub StartTestByOptions
bShowTable = true
call ReadOptions
call Main
if bMakeTerminateAfterTest then
ClearDocFull (gOutputDoc)
gOutputDoc.dispose
&apos;StarDesktop.Terminate
&apos;EnableReschedule( false )
&apos;DispatchSlot( 5300 )
stop
End If
end Sub
Function StartTestWithDefaultOptions
bShowTable = false
call SetDefaultOptions
call Main
dim component(cMaxErrorStates) as string
component(cStWriter) = &quot;Writer&quot;
component(cStCalc) = &quot;Calc&quot;
component(cStPraesentation) = &quot;Impress&quot;
component(cStZeichnen) = &quot;Draw&quot;
component(cStChart) = &quot;Chart&quot;
component(cStMath) = &quot;Math&quot;
component(cStHTML) = &quot;HTML&quot;
component(cStJava) = &quot;Java&quot;
component(cStDataBase) = &quot;Base&quot;
component(cStExtension) = &quot;Extensions&quot;
dim action(3) as string
action(cDocNew) = &quot;new&quot;
action(cDocSaveOpen8) = &quot;V8.0&quot;
action(cDocSaveOpenXML) = &quot;XML&quot;
action(cDocClose) = &quot;close&quot;
dim baseAction(5) as string
baseAction(cDBService) = &quot;services&quot;
baseAction(cDBOpen) = &quot;open&quot;
baseAction(cDBInsert) = &quot;insert&quot;
baseAction(cDBDelete) = &quot;delete&quot;
baseAction(cDBSeek) = &quot;seek&quot;
baseAction(cDBClose) = &quot;close&quot;
dim extAction(2) as string
extAction(cEXTService) = &quot;services&quot;
extAction(cEXTInstall) = &quot;install&quot;
extAction(cEXTUninstall) = &quot;uninstall&quot;
dim result as string
for i = 0 to cMaxErrorStates
for j = 0 to 5
if gErrorState(i, j) = cLogFalse then
result = result &amp; &quot; &quot; &amp; component(i) &amp; &quot;:&quot;
if i = cStDataBase then
result = result &amp; baseAction(j)
else if i = cStExtension then
result = result &amp; extAction(j)
else
result = result &amp; action(j)
end if
end if
end if
next j
next i
StartTestWithDefaultOptions = result
end Function
Sub DispatchSlot(SlotID as Integer)
Dim oArg() as new com.sun.star.beans.PropertyValue
Dim oUrl as new com.sun.star.util.URL
Dim oTrans as Object
Dim oDisp as Object
oTrans = createUNOService(&quot;com.sun.star.util.URLTransformer&quot;)
oUrl.Complete = &quot;slot:&quot; &amp; CStr(SlotID)
oTrans.parsestrict(oUrl)
oDisp = StarDesktop.queryDispatch(oUrl, &quot;_self&quot;, 0)
oDisp.dispatch(oUrl, oArg())
End Sub
Sub LoadLibrary( LibName As String )
dim args(1)
dim arg as new com.sun.star.beans.PropertyValue
arg.Name = &quot;LibraryName&quot;
arg.Value = LibName
args(0) = arg
dim url as new com.sun.star.util.URL
dim trans as object
trans = createUnoService(&quot;com.sun.star.util.URLTransformer&quot; )
url.Complete = &quot;slot:6517&quot;
trans.parsestrict( url )
dim disp as object
disp = StarDesktop.currentFrame.queryDispatch( url, &quot;&quot;, 0 )
disp.dispatch( url, args() )
End Sub
Sub ExecuteSlot( SlotNr As String, oDoc as Object )
dim args()
dim url as new com.sun.star.util.URL
dim trans as object
dim disp as object
trans = createUnoService(&quot;com.sun.star.util.URLTransformer&quot; )
url.Complete = &quot;slot:&quot; + SlotNr
trans.parsestrict( url )
disp = oDoc.CurrentController.Frame.queryDispatch( url, &quot;&quot;, 0 )
disp.dispatch( url, args() )
End Sub
Sub DelAllUserFields (aDoc as Object)
Dim aFieldType as Object
Dim aElements as Variant
Dim i%
Dim aFieldMasters, aFieldMaster as Object
Dim sElement$
aFieldMasters = aDoc.TextFieldMasters
aElements = aFieldMasters.ElementNames
for i = 0 to UBound(aElements)
sElement$ = aElements(i)
if 0 &lt;&gt; instr(sElement$, cUnoUserField ) then
aFieldMaster = aFieldMasters.GetByName(sElement$)
aFieldMaster.Dispose
endif
next
end Sub
Function GetUserFieldState (sName as String, aDoc as Object) as boolean
Dim sFieldText as String
Dim bState as boolean
sFieldText = ReadUserField (sName, aDoc)
if LCase(sFieldText) = cYes then
bState = true
else
bState = false
end IF
GetUserFieldState = bState
end Function
Sub SetUserFieldState (sName as String, nState as boolean, aDoc as Object)
Dim sFieldText as String
sFieldText = cNo &apos;default
Select case nState
case true
sFieldText = cYes
case false
sFieldText = cNo
end Select
WriteUserField (sFieldText, sName, aDoc)
end Sub
Function ReadUserField(sFieldName as String, aDoc as Object) as String
Dim aMasters as Object
aMasters = aDoc.TextFieldMasters
if aMasters.HasByName (cUnoUserField+cUnoSeparator+sFieldName) then
ReadUserField = aMasters.GetByName (cUnoUserField+cUnoSeparator+sFieldName).Content
else
ReadUserField = &quot;&quot;
end If
End Function
Sub WriteUserField(sValue as String, sFieldName as String, aDoc as Object, optional aCursor as Object)
Dim aMasters, aUserField, aTxtCursor as Object
aMasters = aDoc.TextFieldMasters
if aMasters.HasByName (cUnoUserField+cUnoSeparator+sFieldName) then
aUserField = aMasters.GetByName (cUnoUserField+cUnoSeparator+sFieldName)
else
aUserField = aDoc.CreateInstance (cUnoUserField)
aUserField.Name = sFieldName
end if
aUserField.Content = sValue
End Sub
Sub WriteExtUserField(nIndex as Integer, aCursor as Object, aDoc as Object)
Dim aUserField as Object
aUserField = aDoc.CreateInstance (cUnoExtUserField)
aUserField.UserDataType = nIndex
aCursor.Text.InsertTextContent (aCursor, aUserField, True)
aUserField.Fix = True
End Sub
</script:module>