<?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="Test_10er" script:language="StarBasic">REM  10er Test

const sSWLogFileName = &quot;swlog.dat&quot;, sSCLogFileName = &quot;sclog.dat&quot;
const sSDLogFileName = &quot;sdlog.dat&quot;, sSMathLogFileName = &quot;smalog.dat&quot;
const sSChartLogFileName = &quot;schlog.dat&quot;
const sSHptLogFileName = &quot;shptlog.dat&quot;
const sSDrawLogFileName = &quot;sdrwlog.dat&quot;, sJavaLogFileName = &quot;javalog.dat&quot;
const sSDBLogFileName = &quot;dblog.dat&quot;, sExtLogFileName = &quot;extlog.dat&quot;
const sTestGlueLogFileName = &quot;testclosure.log&quot;
const sLogFileName = &quot;smoketest.log&quot;
const cTempFileName = &quot;smoketest_file&quot;

const cMessageSaveOpen8Doc = &quot;Save/Open open Documents (8.0)&quot;
const cMessageSaveOpenXMLDoc = &quot;Save/Open Document XML (6/7)&quot;
const cMessageNewDoc = &quot;New Document&quot;
const cMessageCloseDoc = &quot;Close Document&quot;

Global sWorkPath$
Global sWorkPathURL$
Global LocalTestLog%
Global GlobalTestLog%

Sub Main
	call TestAllDocs()
end Sub

Sub DeleteAllSavedFiles()
	Dim sFileName as String
	sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmWriter)
	If FileExists (sFileName) then
		Kill (sFileName)
	End If
	sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmCalc)
	If FileExists (sFileName) then
		Kill (sFileName)
	End If
	sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmImpress)
	If FileExists (sFileName) then
		Kill (sFileName)
	End If
	sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmDraw)
	If FileExists (sFileName) then
		Kill (sFileName)
	End If
	sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmHyperText)
	If FileExists (sFileName) then
		Kill (sFileName)
	End If
	sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmWriter or cFltXML)
	If FileExists (sFileName) then
		Kill (sFileName)
	End If
	sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmCalc or cFltXML)
	If FileExists (sFileName) then
		Kill (sFileName)
	End If
	sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmImpress or cFltXML)
	If FileExists (sFileName) then
		Kill (sFileName)
	End If
	sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmDraw or cFltXML)
	If FileExists (sFileName) then
		Kill (sFileName)
	End If	
End Sub

Sub DeleteAllLogFiles()
	If FileExists (sWorkPath+sLogFileName) then
		Kill (sWorkPath+sLogFileName)
	End If
	If FileExists (sWorkPath+sSWLogFileName) then
		Kill (sWorkPath+sSWLogFileName)
	End If
	If FileExists (sWorkPath+sSCLogFileName) then
		Kill (sWorkPath+sSCLogFileName)
	End If	
	If FileExists (sWorkPath+sSDLogFileName) then
		Kill (sWorkPath+sSDLogFileName)
	End If	
	If FileExists (sWorkPath+sSMathLogFileName) then
		Kill (sWorkPath+sSMathLogFileName)
	End If	
	If FileExists (sWorkPath+sSChartLogFileName) then
		Kill (sWorkPath+sSChartLogFileName)
	End If	
	If FileExists (sWorkPath+sSHptLogFileName) then
		Kill (sWorkPath+sSHptLogFileName)
	End If	
	If FileExists (sWorkPath+sSDrawLogFileName) then
		Kill (sWorkPath+sSDrawLogFileName)
	End If
	If FileExists (sWorkPath+sJavaLogFileName) then
		Kill (sWorkPath+sJavaLogFileName)
	End If
	If FileExists (sWorkPath+sTestGlueLogFileName) then
		Kill (sWorkPath+sTestGlueLogFileName)
	End If
	If FileExists (sWorkPath+sSDBLogFileName) then
		Kill (sWorkPath+sSDBLogFileName)
	End If
	If FileExists (sWorkPath+sExtLogFileName) then
		Kill (sWorkPath+sExtLogFileName)
	End If
end Sub

Function OpenLogDat (sFileName as String) as Integer
	Dim LocaleFileChannel%
	If FileExists (sWorkPath+sFileName) then
		Kill (sWorkPath+sFileName)
	End If	
	LocaleFileChannel% = Freefile 
	Open sWorkPath+sFileName For Output As LocaleFileChannel%
	OpenLogDat = LocaleFileChannel%
end Function

Sub SetupWorkPath
	Dim configManager as Object
	configManager = CreateUnoService( &quot;com.sun.star.config.SpecialConfigManager&quot; )

	sWorkPath = configManager.SubstituteVariables( &quot;$(userpath)/temp/&quot; )
	sWorkPathURL = configManager.SubstituteVariables( &quot;$(userurl)/temp/&quot; )
End Sub

Function GetSystem (sTmpWorkPath as string) as string
	GetSystem = &quot;&quot;
	if InStr (sTmpWorkPath, &quot;:&quot;) then
		GetSystem = &quot;windows&quot;
	else
		GetSystem = &quot;unix&quot;
	End If
end Function

Function ConvertPathToWin (sTmpWorkPath as string) as string
	for i%=1 to Len(sTmpWorkPath)
		sTemp = Mid (sTmpWorkPath, i%, 1)
		if sTemp = &quot;/&quot; then
			sTmpWorkPath = Left (sTmpWorkPath, i%-1) + &quot;\&quot; + Right (sTmpWorkPath, Len(sTmpWorkPath)-i%)
		else
			if sTemp = &quot;|&quot; then
				sTmpWorkPath = Left (sTmpWorkPath, i%-1) + &quot;:&quot; + Right (sTmpWorkPath, Len(sTmpWorkPath)-i%)
			end If
		end If
	next i%
	ConvertPathToWin = sTmpWorkPath
end Function

Sub TestAllDocs()
DIM sDocURL as String, sDocPath as String
DIM nStrPos as Long

	&apos;search ExtensionURL
	sDocURL = gOutputDoc.URL
	CompatibilityMode(true)
	nStrPos = InStrRev (sDocURL, &quot;/&quot; )
	CompatibilityMode(false)
	sExtensionURL = Left (sDocURL, nStrPos)

	GlobalTestLog = OpenLogDat (sLogFileName)
	call WriteTestSequence
	if bMakeWriterTest then
    gCurrentDocTest = frmWriter
		call MakeDocTest
	end if
	if bMakeCalcTest then
    gCurrentDocTest = frmCalc
		call MakeDocTest
	end if
	if bMakeImpressTest then
    gCurrentDocTest = frmImpress
		call MakeDocTest
	end if
	if bMakeDrawTest then
    gCurrentDocTest = frmDraw
		call MakeDocTest
	end if
	if bMakeHTMLTest then
    gCurrentDocTest = frmHyperText
		call MakeDocTest
	end if
	if bMakeChartTest then
    gCurrentDocTest = frmChart
		call MakeChartTest
	end if	
	if bMakeMathTest then
    gCurrentDocTest = frmMath
		call MakeNewDoc
	end if
	if bMakeJavaTest then
    gCurrentDocTest = frmJava
		call TestJava
	end if
	if bMakeDBTest then
    gCurrentDocTest = frmDataBase
		call Test_DB.TestDB
	end if
	if bMakeExtensionTest then
    gCurrentDocTest = frmExtension
		call Test_Ext.TestExtensions
	end if
	
	Close #GlobalTestLog
	GlobalTestLog = 0
end Sub

Sub WriteTestSequence
	Print #GlobalTestLog, &quot;Sequence of testing&quot;
	
	if bMakeWriterTest then
		WriteTests (&quot;writer  : &quot;, true, GlobalTestLog)
	end if
	if bMakeCalcTest then
		WriteTests (&quot;calc    : &quot;, true, GlobalTestLog)
	end if
	if bMakeImpressTest then
		WriteTests (&quot;impress : &quot;, true, GlobalTestLog)
	end if
	if bMakeDrawTest then
		WriteTests (&quot;draw    : &quot;, true, GlobalTestLog)
	end if
	if bMakeHTMLTest then
		WriteTests (&quot;HTML    : &quot;, true, GlobalTestLog)
	end if
	if bMakeChartTest then
		WriteTests (&quot;chart   : &quot;, false, GlobalTestLog)
	end if	
	if bMakeMathTest then
		WriteTests (&quot;math    : &quot;, false, GlobalTestLog)
	end if
	if bMakeJavaTest then
		WriteTests (&quot;Java    : &quot;, false, GlobalTestLog)
	end if
	if bMakeDBTest then
		WriteDBTests (&quot;Database    : &quot;, GlobalTestLog)
	end if
	if bMakeExtensionTest then
		WriteExtensionTests (&quot;Extension   : &quot;, GlobalTestLog)
  end if

  Print #GlobalTestLog, &quot;testclosure : setup, write_status&quot;

  Print #GlobalTestLog
  end Sub

  Sub WriteTests (sText as string, bTestAll as boolean)
  Dim sWriteStr as string

  sWriteStr = sText
  sWriteStr = sWriteStr + &quot;new&quot;
	if bTestAll then
	if bMakeSaveOpen8Test then
		sWriteStr = sWriteStr + &quot;, save 8.0&quot;
	end if
	if bMakeSaveOpenXMLTest then
		sWriteStr = sWriteStr + &quot;, save XML&quot;
	end if
	if bMakeSaveOpen8Test then
		sWriteStr = sWriteStr + &quot;, open 8.0&quot;
	end if
	if bMakeSaveOpenXMLTest then
		sWriteStr = sWriteStr + &quot;, open XML&quot;
	end if
	end if
	
	sWriteStr = sWriteStr + &quot;, close&quot;
	
	Print #GlobalTestLog, sWriteStr
end Sub

Sub WriteDBTests (sText as string, nFileChannel as integer)
	Dim sWriteStr as string
	
	sWriteStr = sText
	sWriteStr = sWriteStr + &quot;open / services&quot;
	sWriteStr = sWriteStr + &quot;, insert&quot;
	sWriteStr = sWriteStr + &quot;, delete&quot;
	sWriteStr = sWriteStr + &quot;, seek&quot;
	sWriteStr = sWriteStr + &quot;, close&quot;
	
	Print #nFileChannel, sWriteStr
end Sub

Sub WriteExtensionTests (sText as string, nFileChannel as integer)
	Dim sWriteStr as string
	
	sWriteStr = sText
	sWriteStr = sWriteStr + &quot;services&quot;
	sWriteStr = sWriteStr + &quot;, install&quot;
	sWriteStr = sWriteStr + &quot;, uninstall&quot;
	
	Print #nFileChannel, sWriteStr
end Sub

Sub MakeDocTest
	Dim oDoc as Object
	Dim sFileNameXML$, sFileName8$
	Dim bSuccess as Boolean
	
	On Local Error GoTo DOCTESTERROR
	gCurrentTestCase = cLogfileFailed
	LocalTestLog% = OpenLogDat (GetLogFileName(gCurrentDocTest))
	gCurrentTestCase = cDocNew
	oDoc = LoadDoc (&quot;private:factory/&quot; + GetDocFilter(gCurrentDocTest or cFltNewDoc))
	LogTestResult( GetDocFilter(gCurrentDocTest or cFltNewDoc)+&quot; &quot;+ cMessageNewDoc, not IsNull (oDoc) )
	if not IsNull (oDoc) then
    gCurrentTestCase = cDocSaveOpen8
    if bMakeSaveOpen8Test and IsFilterAvailable (gCurrentDocTest or cFlt8) then
      sFileName8 = sWorkPathURL+cTempFileName+&quot;.&quot;+GetDocEndings(gCurrentDocTest or cFlt8)
			SaveDoc (sFileName8, oDoc, GetDocFilter(gCurrentDocTest or cFlt8))
		end if
		gCurrentTestCase = cDocSaveOpenXML
		if bMakeSaveOpenXMLTest and IsFilterAvailable (gCurrentDocTest or cFltXML) then
			sFileNameXML = sWorkPathURL+cTempFileName+&quot;.&quot;+GetDocEndings(gCurrentDocTest or cFltXML)
			SaveDoc (sFileNameXML, oDoc, GetDocFilter(gCurrentDocTest or cFltXML))
		end if
		gCurrentTestCase = cDocClose
		bSuccess = CloseDoc( oDoc )
		LogTestResult( GetDocFilter(gCurrentDocTest)+&quot; &quot;+ cMessageCloseDoc, bSuccess )
		gCurrentTestCase = cDocSaveOpen8
		if bMakeSaveOpen8Test and IsFilterAvailable (gCurrentDocTest or cFlt8) then
			oDoc = LoadDoc (sFileName8)
			
&apos;			oDoc = Documents.open(sFileName)
			LogTestResult( GetDocFilter(gCurrentDocTest or cFltNewDoc)+&quot; &quot;+ cMessageSaveOpen8Doc, not IsNull (oDoc) )
			
			if not IsNull (oDoc) then
				gCurrentTestCase = cDocClose
				oDoc.close (true)
			end If	
		end if
		
		gCurrentTestCase = cDocSaveOpenXML
		if bMakeSaveOpenXMLTest and IsFilterAvailable (gCurrentDocTest or cFltXML) then
			oDoc = LoadDoc (sFileNameXML)
			
&apos;			oDoc = Documents.open(sFileName)
			LogTestResult( GetDocFilter(gCurrentDocTest or cFltNewDoc)+&quot; &quot;+ cMessageSaveOpenXMLDoc, not IsNull (oDoc) )
			
			if not IsNull (oDoc) then
				gCurrentTestCase = cDocClose
				oDoc.close (true)
			end If	
		end if
		
	end If		
	Print #LocalTestLog, &quot;---&quot;
	Close #LocalTestLog%
	LocalTestLog = 0
	Exit Sub &apos; Without error
	
	DOCTESTERROR:
	If ( gCurrentTestCase = cLogfileFailed ) then
		LogTestResult( &quot; &quot;, False )
		Exit Sub
	else
		LogTestResult( GetDocFilter(gCurrentDocTest or cFltNewDoc)+&quot; &quot;+ GetErrorMessage(gCurrentTestCase), False )
		Close #LocalTestLog%
		LocalTestLog = 0
	End If	
	Exit Sub &apos; With error
End Sub

Sub MakeNewDoc
	DIM oDoc as Object
	Dim bSuccess as Boolean
	On Local Error GoTo DOCTESTERROR2
	gCurrentTestCase = cLogfileFailed
	LocalTestLog% = OpenLogDat (GetLogFileName(gCurrentDocTest))
	gCurrentTestCase = cDocNew
&apos;	oDoc = Documents.Add(GetDocFilter(gCurrentDocTest))
	oDoc = LoadDoc (&quot;private:factory/&quot; + GetDocFilter(gCurrentDocTest or cFltNewDoc))
	LogTestResult( GetDocFilter(gCurrentDocTest or cFltNewDoc)+&quot; &quot;+ cMessageNewDoc, not IsNull (oDoc) )
	if not IsNull (oDoc) then
		gCurrentTestCase = cDocClose
		bSuccess = CloseDoc( oDoc )
		LogTestResult( GetDocFilter(gCurrentDocTest)+&quot; &quot;+ cMessageCloseDoc, bSuccess )
	end	If
	Print #LocalTestLog, &quot;---&quot;
	Close #LocalTestLog%
	LocalTestLog = 0
	Exit Sub &apos; Without error
	
	DOCTESTERROR2:
	If ( gCurrentTestCase = cLogfileFailed ) then
		LogTestResult( &quot; &quot;, False )
		Exit Sub
	else
		LogTestResult( GetDocFilter(gCurrentDocTest or cFltNewDoc)+&quot; &quot;+ GetErrorMessage(gCurrentTestCase), False )
		Close #LocalTestLog%
		LocalTestLog = 0
	End If	
	Exit Sub &apos; With error
End Sub

Sub MakeChartTest
	Dim oCharts as Object
	Dim oDoc as Object
	Dim oRange(0) as New com.sun.star.table.CellRangeAddress
	Dim oRect as New com.sun.star.awt.Rectangle
	const cChartName=&quot;TestChart&quot;
  Dim bSuccess as Boolean
  On Local Error GoTo CHARTTESTERROR
  gCurrentTestCase = cLogfileFailed
  LocalTestLog% = OpenLogDat (GetLogFileName(gCurrentDocTest))
  gCurrentTestCase = cDocNew
  oDoc = LoadDoc (&quot;private:factory/&quot; + GetDocFilter(frmCalc or cFltNewDoc))
	if not IsNull (oDoc) then
		oCharts = oDoc.sheets(0).Charts
		oCharts.AddNewByName (cChartName, oRect, oRange(), true, true)
		bSuccess=oCharts.HasByName(cChartName)
		LogTestResult( GetDocFilter(gCurrentDocTest or cFltNewDoc)+&quot; &quot;+ cMessageNewDoc, bSuccess )
		gCurrentTestCase = cDocClose
		oDoc.close (true)
	else
		LogTestResult( GetDocFilter(frmCalc or cFltNewDoc)+&quot; &quot;+ cMessageNewDoc, FALSE )
	End if
	Print #LocalTestLog, &quot;---&quot;
	Close #LocalTestLog%
	LocalTestLog = 0
	Exit Sub &apos; Without error
	
	CHARTTESTERROR:
	If ( gCurrentTestCase = cLogfileFailed ) then
		LogTestResult( &quot; &quot;, False )
		Exit Sub
	else
		LogTestResult( GetDocFilter(gCurrentDocTest or cFltNewDoc)+&quot; &quot;+ GetErrorMessage(gCurrentTestCase), FALSE )
		Close #LocalTestLog%
		LocalTestLog = 0
	End If	
	Exit Sub &apos; With error
End Sub

Sub LogState (bState as Boolean, sText as String, nLocaleFileChannel as integer)
	if bState then
		Print #nLocaleFileChannel, sText+&quot; -&gt; ok&quot;
	else
		Print #nLocaleFileChannel, sText+&quot; -&gt; error&quot;
	end If	
end Sub

Function GetDocEndings (DocType as Integer) as String
	Select Case ( DocType )
		case frmWriter or cFlt8
			GetDocEndings = &quot;odt&quot; &apos; Textdokument 
		case frmCalc or cFlt8
			GetDocEndings = &quot;ods&quot; &apos;Tabellendokument 
		case frmImpress or cFlt8
			GetDocEndings = &quot;odp&quot; &apos;PrÕsentation 
		case frmDraw or cFlt8
			GetDocEndings = &quot;odg&quot; &apos;Zeichen
		case frmHyperText, frmHyperText or cFltXML
			GetDocEndings = &quot;html&quot; &apos;Hypertext-Dokument
		case frmWriter or cFltXML
			GetDocEndings = &quot;sxw&quot; &apos; Textdokument 
		case frmCalc or cFltXML
			GetDocEndings = &quot;sxc&quot; &apos;Tabellendokument 
		case frmImpress or cFltXML
			GetDocEndings = &quot;sxi&quot; &apos;PrÕsentation 
		case frmDraw or cFltXML
			GetDocEndings = &quot;sxd&quot; &apos;Zeichen
		case else
			GetDocEndings = &quot;&quot;
	end Select		
end Function

Function GetDocFilter (DocType as Integer) as String
	Select Case ( DocType )
		case frmWriter or cFlt8 
			GetDocFilter = &quot;writer8&quot; &apos; text document
		case frmCalc or cFlt8
			GetDocFilter = &quot;calc8&quot; &apos; spreadsheet document
		case frmImpress or cFlt8
			GetDocFilter = &quot;impress8&quot; &apos; presentation
		case frmDraw or cFlt8
			GetDocFilter = &quot;draw8&quot; &apos; drawing
		case frmMath or cFlt8
			GetDocFilter = &quot;math8&quot; &apos; formula
			
		case frmWriter or cFltXML
			GetDocFilter = &quot;StarOffice XML (Writer)&quot; &apos; text document
		case frmCalc or cFltXML
			GetDocFilter = &quot;StarOffice XML (Calc)&quot; &apos; spreadsheet document
		case frmImpress or cFltXML
			GetDocFilter = &quot;StarOffice XML (Impress)&quot; &apos; presentation
		case frmDraw or cFltXML
			GetDocFilter = &quot;StarOffice XML (Draw)&quot; &apos; drawing
		case frmMath or cFltXML
			GetDocFilter = &quot;StarOffice XML (Math)&quot; &apos; formula
			
		case frmHyperText, frmHyperText or cFltXML
			GetDocFilter = &quot;HTML&quot; &apos; HTML document
			
		case frmWriter or cFltNewDoc
			GetDocFilter = &quot;swriter&quot; &apos; text document
		case frmCalc or cFltNewDoc
			GetDocFilter = &quot;scalc&quot; &apos; spreadsheet document
		case frmImpress or cFltNewDoc
			GetDocFilter = &quot;simpress&quot; &apos; presentation
		case frmDraw or cFltNewDoc
			GetDocFilter = &quot;sdraw&quot; &apos; drawing
		case frmMath or cFltNewDoc
			GetDocFilter = &quot;smath&quot; &apos; formula
		case frmHyperText or cFltNewDoc
			GetDocFilter = &quot;swriter/web&quot; &apos; HTML document
		case frmChart or cFltNewDoc
			GetDocFilter = &quot;schart&quot; &apos; chart
		case else
			GetDocFilter = &quot;&quot;
	end Select		
end Function

Function GetLogFileName (DocType as Integer) as String
	Select Case ( DocType )
		case frmWriter 
			GetLogFileName = sSWLogFileName &apos; text document
		case frmCalc
			GetLogFileName = sSCLogFileName &apos; spreadsheet document
		case frmImpress
			GetLogFileName = sSDLogFileName &apos; presentation
		case frmDraw
			GetLogFileName = sSDrawLogFileName &apos; drawing
		case frmMath
			GetLogFileName = sSMathLogFileName &apos; formula
		case frmHyperText
			GetLogFileName = sSHptLogFileName &apos; HTML document
		case frmChart
			GetLogFileName = sSChartLogFileName &apos; chart
		case frmJava
			GetLogFileName = sJavaLogFileName &apos;Java
		case frmTestClosure
			GetLogFileName = sTestGlueLogFileName &apos; test framework
		case frmDataBase
			GetLogFileName = sSDBLogFileName &apos;Database	
		case frmExtension
			GetLogFileName = sExtLogFileName &apos;Extension	
		case else
			GetLogFileName = &quot;&quot;
	end Select		
end Function

Function GetErrorMessageOnAction (nAction as Integer) as String
	Select Case ( nAction )
		case cDocNew 
			GetErrorMessageOnAction = cMessageNewDoc 
		case cDocSaveOpen8
			GetErrorMessageOnAction = cMessageSaveOpen8Doc
		case cDocSaveOpenXML
			GetErrorMessageOnAction = cMessageSaveOpenXMLDoc
		case cDocClose
			GetErrorMessageOnAction = cMessageCloseDoc
		case else
			GetErrorMessageOnAction = &quot;&quot;
	end Select		
end Function

Function IsFilterAvailable (FilterType as Integer) as boolean
	IsFilterAvailable = true
	if ((FilterType = (frmHyperText or cFltXML))) then
		IsFilterAvailable = false
	end if
End Function

Function TestJava
	Dim oObj as Object
	gCurrentTestCase = cLogfileFailed
	LocalTestLog% = OpenLogDat (GetLogFileName(gCurrentDocTest))
	gCurrentTestCase = cDocNew
	oObj = createUnoService( cUnoJavaLoader )
	LogTestResult( &quot;Java &quot;+ cMessageNewDoc, not IsNull (oObj) )
	
	Print #LocalTestLog, &quot;---&quot;
	Close #LocalTestLog%
	LocalTestLog = 0
	
	TestJava = not IsNull (oObj)
End Function

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 LoadDoc (DocName as String) as Object
	dim trans as object
	trans = createUnoService(&quot;com.sun.star.util.URLTransformer&quot; )
	url = createUnoStruct(&quot;com.sun.star.util.URL&quot; )
	url.Complete = DocName
	if Left(DocName, 5 ) &lt;&gt; &quot;file:&quot; then
	trans.parsestrict( url )
	endif
	
	Dim aPropArray(0) as Object
	aPropArray(0) = CreateUnoStruct(&quot;com.sun.star.beans.PropertyValue&quot;)
	aPropArray(0).Name = &quot;OpenFlags&quot;
	aPropArray(0).Value = &quot;S&quot;

	dim doc as object
	dim noargs()
	doc = StarDesktop.loadComponentFromURL( url.Complete, &quot;_blank&quot;, 0, aPropArray() )	&apos; XModel
	LoadDoc = doc
End Sub

Sub SaveDoc (DocName as String, oDoc as Object, sFilterName as string )
	dim trans as object
	trans = createUnoService(&quot;com.sun.star.util.URLTransformer&quot; )
	url = createUnoStruct(&quot;com.sun.star.util.URL&quot; )
	url.Complete = DocName
	if Left(DocName, 5 ) &lt;&gt; &quot;file:&quot; then
	trans.parsestrict( url )
	endif
	
	if not (sFilterName = &quot;&quot;) then
		Dim aPropArray(0) as Object
		aPropArray(0) = CreateUnoStruct(&quot;com.sun.star.beans.PropertyValue&quot;)
		aPropArray(0).Name = &quot;FilterName&quot;
		aPropArray(0).Value = sFilterName
	
		oDoc.storeAsURL( url.Complete, aPropArray() )
	else
		MessageBox &quot;Filtername is unknown!&quot;
	end if	
end Sub

Function CloseDoc( oDoc as Object )
  Dim oListener as Object
  oListener = CreateUnoListener( "Events.closeListener_", "com.sun.star.util.XCloseListener" )
  oDoc.addCloseListener( oListener )

  Events.ResetCloseListenerFlag()
  oDoc.close( true )
  closeDoc = Events.HasCloseListenerBeenCalled()

  if ( Not Events.HasCloseListenerBeenCalled() ) Then
    &apos; do this only if closing was not successful - otherwise, we'd get a DisposedException
    oDoc.removeCloseListener( oListener )
  End If
End Function
</script:module>
