[Libreoffice-commits] .: postprocess/prj smoketest/com smoketest/data smoketest/losmoketest smoketest/losmoketest.py smoketest/losmoketest.readme smoketest/makefile.mk smoketestoo_native/com smoketestoo_native/data smoketestoo_native/losmoketest smoketestoo_native/losmoketest.py smoketestoo_native/losmoketest.readme smoketestoo_native/makefile.mk smoketestoo_native/prj smoketestoo_native/smoketest.cxx smoketest/prj smoketest/smoketest.cxx solenv/gbuild

Petr Mladek pmladek at kemper.freedesktop.org
Fri Dec 2 09:36:23 PST 2011


 postprocess/prj/build.lst                                         |    2 
 smoketest/com/sun/star/comp/smoketest/MANIFEST.MF                 |    2 
 smoketest/com/sun/star/comp/smoketest/TestExtension.idl           |   40 
 smoketest/com/sun/star/comp/smoketest/TestExtension.java          |  166 +
 smoketest/com/sun/star/comp/smoketest/delzip                      |    1 
 smoketest/com/sun/star/comp/smoketest/makefile.mk                 |   90 +
 smoketest/com/sun/star/comp/smoketest/manifest.xml                |    5 
 smoketest/data/Events.xml                                         |   66 
 smoketest/data/Global.xml                                         |  865 ++++++++++
 smoketest/data/OptionsDlg.xml                                     |   65 
 smoketest/data/Test_10er.xml                                      |  775 ++++++++
 smoketest/data/Test_DB.xml                                        |  147 +
 smoketest/data/Test_Ext.xml                                       |  116 +
 smoketest/data/content.xml                                        |  114 +
 smoketest/data/dialog-lb.xml                                      |   31 
 smoketest/data/dialog-lc.xml                                      |   31 
 smoketest/data/makefile.mk                                        |   70 
 smoketest/data/manifest.xml                                       |   49 
 smoketest/data/meta.xml                                           |   28 
 smoketest/data/script-lb.xml                                      |   35 
 smoketest/data/script-lc.xml                                      |   31 
 smoketest/data/settings.xml                                       |   28 
 smoketest/data/styles.xml                                         |   28 
 smoketest/losmoketest                                             |   61 
 smoketest/losmoketest.py                                          |  645 +++++++
 smoketest/losmoketest.readme                                      |  186 ++
 smoketest/makefile.mk                                             |   49 
 smoketest/prj/build.lst                                           |    4 
 smoketest/prj/d.lst                                               |    4 
 smoketest/smoketest.cxx                                           |  221 ++
 smoketestoo_native/com/sun/star/comp/smoketest/MANIFEST.MF        |    2 
 smoketestoo_native/com/sun/star/comp/smoketest/TestExtension.idl  |   40 
 smoketestoo_native/com/sun/star/comp/smoketest/TestExtension.java |  166 -
 smoketestoo_native/com/sun/star/comp/smoketest/delzip             |    1 
 smoketestoo_native/com/sun/star/comp/smoketest/makefile.mk        |   90 -
 smoketestoo_native/com/sun/star/comp/smoketest/manifest.xml       |    5 
 smoketestoo_native/data/Events.xml                                |   66 
 smoketestoo_native/data/Global.xml                                |  865 ----------
 smoketestoo_native/data/OptionsDlg.xml                            |   65 
 smoketestoo_native/data/Test_10er.xml                             |  775 --------
 smoketestoo_native/data/Test_DB.xml                               |  147 -
 smoketestoo_native/data/Test_Ext.xml                              |  116 -
 smoketestoo_native/data/content.xml                               |  114 -
 smoketestoo_native/data/dialog-lb.xml                             |   31 
 smoketestoo_native/data/dialog-lc.xml                             |   31 
 smoketestoo_native/data/makefile.mk                               |   70 
 smoketestoo_native/data/manifest.xml                              |   49 
 smoketestoo_native/data/meta.xml                                  |   28 
 smoketestoo_native/data/script-lb.xml                             |   35 
 smoketestoo_native/data/script-lc.xml                             |   31 
 smoketestoo_native/data/settings.xml                              |   28 
 smoketestoo_native/data/styles.xml                                |   28 
 smoketestoo_native/losmoketest                                    |   61 
 smoketestoo_native/losmoketest.py                                 |  645 -------
 smoketestoo_native/losmoketest.readme                             |  186 --
 smoketestoo_native/makefile.mk                                    |   27 
 smoketestoo_native/prj/build.lst                                  |    6 
 smoketestoo_native/prj/d.lst                                      |    3 
 smoketestoo_native/smoketest.cxx                                  |  221 --
 solenv/gbuild/extensions/post_BuildplTargets.mk                   |    3 
 60 files changed, 3960 insertions(+), 3930 deletions(-)

New commits:
commit 57578c1828755850d1dfdb391d571d7bf1b7cada
Author: Petr Mladek <pmladek at suse.cz>
Date:   Fri Dec 2 18:33:11 2011 +0100

    split smoketest module to fix build
    
    + move the library and other build stuff to a new "smoketest" module
    + keep "smoketestoo_native" only for installing and running the tests
    + restore the targets in top level make

diff --git a/postprocess/prj/build.lst b/postprocess/prj/build.lst
index b24eb7b..820675c 100644
--- a/postprocess/prj/build.lst
+++ b/postprocess/prj/build.lst
@@ -1,4 +1,4 @@
-po      postprocess     ::      accessibility BINFILTER:binfilter configmgr CRASHREP:crashrep CT2N:ct2n dtrans embeddedobj embedserv EPM:epm DESKTOP:extensions extras DESKTOP:fpicker HELP:helpcontent2 io LIBRSVG:librsvg lingucomponent ODK:odk officecfg psprint_config remotebridges scaddins scp2 DESKTOP:setup_native sysui testtools ucb UnoControls ure wizards MORE_FONTS:more_fonts DICTIONARIES:dictionaries PYUNO:pyuno readlicense_oo DESKTOP:unodevtools JFREEREPORT:jfreereport REPORTBUILDER:reportbuilder LANGUAGETOOL:languagetool SDEXT:sdext MYSQLC:mysqlc NLPSOLVER:nlpsolver STLPORT:stlport LIBXSLT:libxslt smoketestoo_native tail_build NULL
+po      postprocess     ::      accessibility BINFILTER:binfilter configmgr CRASHREP:crashrep CT2N:ct2n dtrans embeddedobj embedserv EPM:epm DESKTOP:extensions extras DESKTOP:fpicker HELP:helpcontent2 io LIBRSVG:librsvg lingucomponent ODK:odk officecfg psprint_config remotebridges scaddins scp2 DESKTOP:setup_native sysui testtools ucb UnoControls ure wizards MORE_FONTS:more_fonts DICTIONARIES:dictionaries PYUNO:pyuno readlicense_oo DESKTOP:unodevtools JFREEREPORT:jfreereport REPORTBUILDER:reportbuilder LANGUAGETOOL:languagetool SDEXT:sdext MYSQLC:mysqlc NLPSOLVER:nlpsolver STLPORT:stlport LIBXSLT:libxslt smoketest tail_build NULL
 po	postprocess			    	usr1	-	all	po_mkout NULL
 po	postprocess\checkxml		nmake	-	all	po_checkxml NULL
 po	postprocess\packconfig		nmake	-	all	po_packconfig po_checkxml NULL
diff --git a/smoketest/com/sun/star/comp/smoketest/MANIFEST.MF b/smoketest/com/sun/star/comp/smoketest/MANIFEST.MF
new file mode 100755
index 0000000..09e2f42
--- /dev/null
+++ b/smoketest/com/sun/star/comp/smoketest/MANIFEST.MF
@@ -0,0 +1,2 @@
+RegistrationClassName: com.sun.star.comp.smoketest.TestExtension
+
diff --git a/smoketest/com/sun/star/comp/smoketest/TestExtension.idl b/smoketest/com/sun/star/comp/smoketest/TestExtension.idl
new file mode 100644
index 0000000..83c370e
--- /dev/null
+++ b/smoketest/com/sun/star/comp/smoketest/TestExtension.idl
@@ -0,0 +1,40 @@
+/*************************************************************************
+ *
+ * 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 _com_sun_star_comp_smoketest_TestExtension_idl_
+#define _com_sun_star_comp_smoketest_TestExtension_idl_
+
+#include <com/sun/star/lang/XServiceInfo.idl>
+
+
+module com { module sun { module star { module comp { module smoketest {
+        // example service, XServiceInfo is implemented here for demonstration
+        // issues. XServiceInfo must be implemented by all components.
+        service TestExtension: ::com::sun::star::lang::XServiceInfo;
+};};};};};
+
+#endif
diff --git a/smoketest/com/sun/star/comp/smoketest/TestExtension.java b/smoketest/com/sun/star/comp/smoketest/TestExtension.java
new file mode 100755
index 0000000..c08c719
--- /dev/null
+++ b/smoketest/com/sun/star/comp/smoketest/TestExtension.java
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+package com.sun.star.comp.smoketest;
+
+import com.sun.star.lib.uno.helper.Factory;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.lang.XSingleComponentFactory;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.registry.XRegistryKey;
+import com.sun.star.lang.XInitialization;
+import com.sun.star.lang.XTypeProvider;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.uno.Type;
+
+/** This class capsulates the class, that implements the minimal component, a
+ * factory for creating the service (<CODE>__getComponentFactory</CODE>) and a
+ * method, that writes the information into the given registry key
+ * (<CODE>__writeRegistryServiceInfo</CODE>).
+ */
+public class TestExtension {
+    /** This class implements the component. At least the interfaces XServiceInfo,
+     * XTypeProvider, and XInitialization should be provided by the service.
+     */
+    public static class _TestExtension extends WeakBase
+        implements XServiceInfo {
+        /** The service name, that must be used to get an instance of this service.
+         */
+        static private final String __serviceName =
+        "com.sun.star.comp.smoketest.TestExtension";
+
+        /** The initial component contextr, that gives access to
+         * the service manager, supported singletons, ...
+         * It's often later used
+         */
+        private XComponentContext m_cmpCtx;
+
+        /** The service manager, that gives access to all registered services.
+         * It's often later used
+         */
+        private XMultiComponentFactory m_xMCF;
+
+        /** The constructor of the inner class has a XMultiServiceFactory parameter.
+         * @param xmultiservicefactoryInitialization A special service factory
+         * could be introduced while initializing.
+         */
+        public _TestExtension(XComponentContext xCompContext) {
+            try {
+                m_cmpCtx = xCompContext;
+                m_xMCF = m_cmpCtx.getServiceManager();
+            }
+            catch( Exception e ) {
+                e.printStackTrace();
+            }
+        }
+
+        /** This method returns an array of all supported service names.
+         * @return Array of supported service names.
+         */
+        public String[] getSupportedServiceNames() {
+            return getServiceNames();
+        }
+
+        /** This method is a simple helper function to used in the
+         * static component initialisation functions as well as in
+         * getSupportedServiceNames.
+         */
+        public static String[] getServiceNames() {
+            String[] sSupportedServiceNames = { __serviceName };
+            return sSupportedServiceNames;
+        }
+
+        /** This method returns true, if the given service will be
+         * supported by the component.
+         * @param sServiceName Service name.
+         * @return True, if the given service name will be supported.
+         */
+        public boolean supportsService( String sServiceName ) {
+            return sServiceName.equals( __serviceName );
+        }
+
+        /** Return the class name of the component.
+         * @return Class name of the component.
+         */
+        public String getImplementationName() {
+            return  _TestExtension.class.getName();
+        }
+    }
+
+
+    /**
+     * Gives a factory for creating the service.
+     * This method is called by the <code>JavaLoader</code>
+     * <p>
+     * @return  returns a <code>XSingleComponentFactory</code> for creating
+     *          the component
+     * @param   sImplName the name of the implementation for which a
+     *          service is desired
+     * @see     com.sun.star.comp.loader.JavaLoader
+     */
+    public static XSingleComponentFactory __getComponentFactory(String sImplName)
+    {
+        XSingleComponentFactory xFactory = null;
+
+        if ( sImplName.equals( _TestExtension.class.getName() ) )
+            xFactory = Factory.createComponentFactory(_TestExtension.class,
+                                             _TestExtension.getServiceNames());
+
+        return xFactory;
+    }
+
+    /**
+     * Writes the service information into the given registry key.
+     * This method is called by the <code>JavaLoader</code>
+     * <p>
+     * @return  returns true if the operation succeeded
+     * @param   regKey the registryKey
+     * @see     com.sun.star.comp.loader.JavaLoader
+     */
+    public static boolean __writeRegistryServiceInfo(XRegistryKey regKey) {
+        return Factory.writeRegistryServiceInfo(_TestExtension.class.getName(),
+                                                _TestExtension.getServiceNames(),
+                                                regKey);
+    }
+        /** This method is a member of the interface for initializing an object
+         * directly after its creation.
+         * @param object This array of arbitrary objects will be passed to the
+         * component after its creation.
+         * @throws Exception Every exception will not be handled, but will be
+         * passed to the caller.
+         */
+        public void initialize( Object[] object )
+            throws com.sun.star.uno.Exception {
+            /* The component describes what arguments its expected and in which
+             * order!At this point you can read the objects and can intialize
+             * your component using these objects.
+             */
+        }
+
+}
diff --git a/smoketest/com/sun/star/comp/smoketest/delzip b/smoketest/com/sun/star/comp/smoketest/delzip
new file mode 100755
index 0000000..636fda9
--- /dev/null
+++ b/smoketest/com/sun/star/comp/smoketest/delzip
@@ -0,0 +1 @@
+ECHO is OFF
diff --git a/smoketest/com/sun/star/comp/smoketest/makefile.mk b/smoketest/com/sun/star/comp/smoketest/makefile.mk
new file mode 100755
index 0000000..937f377
--- /dev/null
+++ b/smoketest/com/sun/star/comp/smoketest/makefile.mk
@@ -0,0 +1,90 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ     = ../../../../..
+PRJNAME = smoketestdoc
+PACKAGE = com/sun/star/comp/smoketest
+TARGET  = com_sun_star_comp_smoketest
+
+no_common_build_zip:=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.IF "$(SOLAR_JAVA)" != ""
+
+.INCLUDE : settings.mk
+
+JARFILES = ridl.jar jurt.jar unoil.jar juh.jar
+
+JARTARGET          = TestExtension.jar
+JARCOMPRESS        = TRUE
+CUSTOMMANIFESTFILE = MANIFEST.MF
+
+ZIP1TARGET=TestExtension
+ZIP1LIST=*
+ZIPFLAGS=-r
+ZIP1DIR=$(MISC)/$(TARGET)
+ZIP1EXT=.oxt
+
+# --- Files --------------------------------------------------------
+
+JAVAFILES = TestExtension.java
+
+# --- Targets ------------------------------------------------------
+
+ZIP1DEPS=$(MISC)/$(TARGET)/$(JARTARGET)\
+         $(MISC)/$(TARGET)/TestExtension.rdb\
+         $(MISC)/$(TARGET)/META-INF/manifest.xml
+
+.INCLUDE :  target.mk
+
+.IF "$(depend)" == ""
+$(MISC)/$(TARGET)/META-INF:
+    @-$(MKDIRHIER) $(@)
+
+$(MISC)/TestExtension.urd: TestExtension.idl
+    $(COMMAND_ECHO)$(IDLC) -O$(MISC) -I$(SOLARIDLDIR) -cid -we $<
+
+$(MISC)/$(TARGET)/META-INF/manifest.xml $(MISC)/$(TARGET)/TestExtension.rdb : $(MISC)/$(TARGET)/META-INF
+
+$(MISC)/$(TARGET)/META-INF/manifest.xml: manifest.xml
+    $(COMMAND_ECHO)$(COPY) $< $@
+
+$(MISC)/$(TARGET)/TestExtension.rdb: $(MISC)/TestExtension.urd
+    $(COMMAND_ECHO)$(REGMERGE) $@ /UCR $<
+
+$(JAVACLASSFILES) .UPDATEALL: $(MISC)/$(TARGET)/TestExtension.rdb
+    $(COMMAND_ECHO)$(JAVAMAKER) -O$(CLASSDIR) -BUCR -nD -X$(SOLARBINDIR)/types.rdb $<
+
+$(MISC)/$(TARGET)/$(JARTARGET) : $(JARTARGETN)
+    $(COMMAND_ECHO)$(COPY) $< $@
+.END
+
+.ELSE
+ at all:
+    @echo "Java disabled. Nothing to do."
+.ENDIF
diff --git a/smoketest/com/sun/star/comp/smoketest/manifest.xml b/smoketest/com/sun/star/comp/smoketest/manifest.xml
new file mode 100755
index 0000000..fcedabf
--- /dev/null
+++ b/smoketest/com/sun/star/comp/smoketest/manifest.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
+ <manifest:file-entry manifest:full-path="TestExtension.jar" manifest:media-type="application/vnd.sun.star.uno-component;type=Java"/>
+ <manifest:file-entry manifest:full-path="TestExtension.rdb" manifest:media-type="application/vnd.sun.star.uno-typelibrary;type=RDB"/>
+</manifest:manifest>
diff --git a/smoketest/data/Events.xml b/smoketest/data/Events.xml
new file mode 100644
index 0000000..414f2c4
--- /dev/null
+++ b/smoketest/data/Events.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* 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.
+*
+**********************************************************************-->
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Events" script:language="StarBasic">REM  *****  BASIC  *****
+
+Global s_CloseListenerCalled As Boolean
+
+Sub PressCancel
+    gDlgState = cDlgCancel
+end Sub
+
+Sub PressOk
+    gDlgState = cDlgOk
+end Sub
+
+Sub PressTest
+    gOptionsDialog.EndExecute()
+    gDlgState = cDlgStartTest
+end Sub
+
+Sub closeListener_queryClosing
+  &apos; not interested in
+  closeListener_queryClosing = TRUE
+End Sub
+
+Sub closeListener_notifyClosing
+  s_CloseListenerCalled = TRUE
+End Sub
+
+Sub closeListener_disposing
+  &apos; not interested in
+End Sub
+
+Sub ResetCloseListenerFlag
+  s_CloseListenerCalled = FALSE
+End Sub
+
+Function HasCloseListenerBeenCalled As Boolean
+  HasCloseListenerBeenCalled = s_CloseListenerCalled
+End Function
+</script:module>
diff --git a/smoketest/data/Global.xml b/smoketest/data/Global.xml
new file mode 100644
index 0000000..8c549f8
--- /dev/null
+++ b/smoketest/data/Global.xml
@@ -0,0 +1,865 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* 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.
+*
+**********************************************************************-->
+<!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, cDocOpen50 = 3, cDocClose = 4, cDocMacros = 5
+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 cUserFieldTestOpen50 = &quot;Open50&quot;
+Global const cUserFieldTestTerminateAfterTest = &quot;Terminate&quot;, cUserFieldTestOpenSave8 = &quot;SaveOpen8&quot;, cUserFieldTestMacros = &quot;Macros&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, bMakeOpen50Test as boolean
+Global bMakeTerminateAfterTest as boolean, bShowTable as boolean
+Global bMakeSaveOpen8Test as boolean, bMakeMacrosTest as boolean
+
+global sExtensionURL as string
+
+global oBinFilterComp as Object
+
+Dim gDlgState as Integer
+
+Sub SetGlobalDoc
+    gOutputDoc = ThisComponent
+    REM need to have the binfilter component, and SOLARSRC set to find sample docs
+    if Environ(&quot;SOLARSRC&quot;) &lt;&gt; &quot;&quot; then
+        oBinFilterComp = createUnoService( &quot;com.sun.star.comp.office.BF_MigrateFilter&quot; )
+    End If
+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(5) as string
+    tableRows(cDocNew) = &quot;new&quot;
+    tableRows(cDocSaveOpen8) = &quot;V8.0&quot;
+    tableRows(cDocSaveOpenXML) = &quot;XML&quot;
+    tableRows(cDocOpen50) = &quot;V5.0&quot;
+    tableRows(cDocClose) = &quot;close&quot;
+    tableRows(cDocMacros) = &quot;macros&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(7,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 5
+            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
+        if gTestCaseAnnotations(nStatusType, nAction) &lt;&gt; &quot;&quot; then
+            gTestCaseAnnotations(nStatusType, nAction) = _
+                gTestCaseAnnotations(nStatusType, nAction) &amp; &quot;; &quot;
+        end if
+        gTestCaseAnnotations( nStatusType, nAction ) = gTestCaseAnnotations( nStatusType, nAction ) + sFailureAnnotation
+    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 )
+
+    if isNull(oBinFilterComp) then
+        oControl = gOptionsDialog.getControl(&quot;cbOpen50Test&quot;)
+        oControl.Model.setPropertyValue(&quot;Enabled&quot;, FALSE)
+    end If
+
+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 (cUserFieldTestOpen50, -(gOptionsDialog.getControl(&quot;cbOpen50Test&quot;).getState), gOutPutDoc)
+    SetUserFieldState (cUserFieldTestOpenSave8, -(gOptionsDialog.getControl(&quot;cbSaveOpen8Test&quot;).getState), gOutputDoc)
+    SetUserFieldState (cUserFieldTestMacros, -(gOptionsDialog.getControl(&quot;cbMacrosTest&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)))
+    if not isNull(oBinFilterComp) then
+        gOptionsDialog.getControl(&quot;cbOpen50Test&quot;).setState( -( GetUserFieldState (cUserFieldTestOpen50, gOutPutDoc)))
+    else
+        gOptionsDialog.getControl(&quot;cbOpen50Test&quot;).setState(0)
+    end If
+    gOptionsDialog.getControl(&quot;cbSaveOpen8Test&quot;).setState( -( GetUserFieldState (cUserFieldTestOpenSave8, gOutputDoc)))
+    gOptionsDialog.getControl(&quot;cbMacrosTest&quot;).setState( -( GetUserFieldState (cUserFieldTestMacros, 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)
+    if not isNull(oBinFilterComp) then
+        bMakeOpen50Test = GetUserFieldState (cUserFieldTestOpen50, gOutPutDoc)
+    else
+        bMakeOpen50Test = false
+    End If
+    bMakeSaveOpen8Test = GetUserFieldState (cUserFieldTestOpenSave8, gOutputDoc)
+    bMakeMacrosTest = GetUserFieldState (cUserFieldTestMacros, 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
+    if not isNull(oBinFilterComp) then
+        bMakeOpen50Test = true
+    else
+        bMakeOpen50Test = false
+    End If
+    bMakeSaveOpen8Test = true
+    bMakeMacrosTest = 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(5) as string
+    action(cDocNew) = &quot;new&quot;
+    action(cDocSaveOpen8) = &quot;V8.0&quot;
+    action(cDocSaveOpenXML) = &quot;XML&quot;
+    action(cDocOpen50) = &quot;V5.0&quot;
+    action(cDocClose) = &quot;close&quot;
+    action(cDocMacros) = &quot;macros&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
+                if gTestCaseAnnotations(i, j) &lt;&gt; &quot;&quot; then
+                    result = result &amp; &quot;(&quot; &amp; _
+                        gTestCaseAnnotations(i, j) &amp; &quot;)&quot;
+                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>
diff --git a/smoketest/data/OptionsDlg.xml b/smoketest/data/OptionsDlg.xml
new file mode 100644
index 0000000..5da9355
--- /dev/null
+++ b/smoketest/data/OptionsDlg.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* 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.
+*
+**********************************************************************-->
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="OptionsDlg" dlg:left="173" dlg:top="100" dlg:width="223" dlg:height="214" dlg:closeable="true" dlg:moveable="true" dlg:title="Options for smoketest">
+ <dlg:bulletinboard>
+  <dlg:titledbox dlg:id="fmTests" dlg:tab-index="0" dlg:left="114" dlg:top="7" dlg:width="100" dlg:height="157">
+   <dlg:title dlg:value="Tests"/>
+  </dlg:titledbox>
+  <dlg:checkbox dlg:id="cbWriterTest" dlg:tab-index="1" dlg:left="19" dlg:top="21" dlg:width="80" dlg:height="8" dlg:value="Writer" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbCalcTest" dlg:tab-index="2" dlg:left="19" dlg:top="35" dlg:width="80" dlg:height="8" dlg:value="Calc" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbImpressTest" dlg:tab-index="3" dlg:left="19" dlg:top="49" dlg:width="80" dlg:height="8" dlg:value="Impress" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbDrawTest" dlg:tab-index="4" dlg:left="19" dlg:top="63" dlg:width="80" dlg:height="8" dlg:value="Draw" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbHTMLTest" dlg:tab-index="5" dlg:left="19" dlg:top="77" dlg:width="80" dlg:height="8" dlg:value="HTML" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbMathTest" dlg:tab-index="6" dlg:left="19" dlg:top="91" dlg:width="80" dlg:height="8" dlg:value="Math" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbChartTest" dlg:tab-index="7" dlg:left="19" dlg:top="105" dlg:width="80" dlg:height="8" dlg:value="Chart" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbJavaTest" dlg:tab-index="8" dlg:left="19" dlg:top="119" dlg:width="80" dlg:height="8" dlg:value="Java" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbDatabaseTest" dlg:tab-index="9" dlg:left="19" dlg:top="133" dlg:width="80" dlg:height="8" dlg:value="Database" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbExtensionTest" dlg:tab-index="10" dlg:left="19" dlg:top="147" dlg:width="80" dlg:height="8" dlg:value="Extension" dlg:checked="false"/>
+
+  <dlg:titledbox dlg:id="fmInstalls" dlg:tab-index="11" dlg:left="7" dlg:top="7" dlg:width="100" dlg:height="157">
+   <dlg:title dlg:value="Functions"/>
+  </dlg:titledbox>
+  <dlg:checkbox dlg:id="cbSaveOpen8Test" dlg:tab-index="12" dlg:left="126" dlg:top="21" dlg:width="80" dlg:height="8" dlg:value="Save / Open V8.0" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbSaveOpenXMLTest" dlg:tab-index="13" dlg:left="126" dlg:top="35" dlg:width="80" dlg:height="8" dlg:value="Save / Open XML" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbOpen50Test" dlg:tab-index="14" dlg:left="126" dlg:top="49" dlg:width="80" dlg:height="8" dlg:value="Open V5.0" dlg:checked="false"/>
+  <dlg:checkbox dlg:id="cbMacrosTest" dlg:tab-index="15" dlg:left="126" dlg:top="63" dlg:width="80" dlg:height="8" dlg:value="Macros" dlg:checked="false"/>
+  <dlg:titledbox dlg:id="fmBroker" dlg:tab-index="16" dlg:left="7" dlg:top="169" dlg:width="208" dlg:height="17"/>
+  <dlg:checkbox dlg:id="cbTerminateAfterTest" dlg:tab-index="17" dlg:disabled="true" dlg:left="19" dlg:top="174" dlg:width="190" dlg:height="8" dlg:value="Terminate Office after test" dlg:checked="false"/>
+
+  <dlg:button dlg:id="btOk" dlg:tab-index="18" dlg:left="7" dlg:top="193" dlg:width="65" dlg:height="15" dlg:value="Ok" dlg:button-type="ok" dlg:default="true">
+   <script:event script:event-name="on-performaction" script:location="document" script:macro-name="Standard.Events.PressOk" script:language="StarBasic"/>
+  </dlg:button>
+  <dlg:button dlg:id="btCancel" dlg:tab-index="19" dlg:left="80" dlg:top="193" dlg:width="65" dlg:height="15" dlg:value="Cancel" dlg:button-type="ok">
+   <script:event script:event-name="on-performaction" script:location="document" script:macro-name="Standard.Events.PressCancel" script:language="StarBasic"/>
+  </dlg:button>
+  <dlg:button dlg:id="btStart" dlg:tab-index="20" dlg:left="152" dlg:top="193" dlg:width="65" dlg:height="15" dlg:value="Smoketest">
+   <script:event script:event-name="on-performaction" script:location="vnd.sun.star.script" script:macro-name="Standard.Events.PressTest?language=Basic&amp;location=document" script:language="Script"/>
+  </dlg:button>
+ </dlg:bulletinboard>
+</dlg:window>
diff --git a/smoketest/data/Test_10er.xml b/smoketest/data/Test_10er.xml
new file mode 100644
index 0000000..54ee076
--- /dev/null
+++ b/smoketest/data/Test_10er.xml
@@ -0,0 +1,775 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* 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.
+*
+**********************************************************************-->
+<!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 cMessageOpen50Doc = &quot;Open Document 5.0&quot;
+const cMessageNewDoc = &quot;New Document&quot;
+const cMessageCloseDoc = &quot;Close Document&quot;
+const cMessageRunMacros = &quot;Run Macros&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
+    sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmWriter or cFlt50)
+    If FileExists (sFileName) then
+        Kill (sFileName)
+    End If
+    sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmCalc or cFlt50)
+    If FileExists (sFileName) then
+        Kill (sFileName)
+    End If
+    sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmImpress or cFlt50)
+    If FileExists (sFileName) then
+        Kill (sFileName)
+    End If
+    sFileName = sWorkPath+cTempFileName+&quot;.&quot;+GetDocEndings(frmDraw or cFlt50)
+    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
+    if bMakeOpen50Test then
+        sWriteStr = sWriteStr + &quot;, open 5.0&quot;
+    end if
+    if bMakeMacrosTest then
+        sWriteStr = sWriteStr + &quot;, run macros&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$, sFileName50$, 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
+
+        gCurrentTestCase = cDocOpen50
+        if bMakeOpen50Test and IsFilterAvailable (gCurrentDocTest or cFlt50) then
+            SOLARSRC = ConvertToURL(Environ(&quot;SOLARSRC&quot;))
+            sFileName50 = SOLARSRC+&quot;/qadevOOo/testdocs/ttt.&quot;+GetDocEndings(gCurrentDocTest or cFlt50)
+            oDoc = LoadDoc (sFileName50)
+
+&apos;          oDoc = Documents.open(sFileName)
+            LogTestResult( GetDocFilter(gCurrentDocTest or cFltNewDoc)+&quot; &quot;+ cMessageOpen50Doc, not IsNull (oDoc) )
+
+            if not IsNull (oDoc) then
+                gCurrentTestCase = cDocClose
+                oDoc.close (true)
+            end If
+        end if
+
+        gCurrentTestCase = cDocMacros
+	&apos; Just one calc macro test for now
+	&apos; To-Do split this into its own per-module/test .xml and add more
+        if bMakeMacrosTest and gCurrentDocTest = frmCalc then
+            oDoc = LoadDoc (&quot;private:factory/&quot; + GetDocFilter(gCurrentDocTest or cFltNewDoc))
+            oDocCtrl = oDoc.getCurrentController()
+            oDocFrame = oDocCtrl.getFrame()
+            oDispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
+
+            dim args(0) as new com.sun.star.beans.PropertyValue
+
+            args(0).Name = &quot;ToPoint&quot;
+            args(0).Value = &quot;$A$1&quot;
+            oDispatcher.executeDispatch(oDocFrame, &quot;.uno:GoToCell&quot;, &quot;&quot;, 0, args())
+            args(0).Name = &quot;By&quot;
+            args(0).Value = 5
+            oDispatcher.executeDispatch(oDocFrame, &quot;.uno:GoRightSel&quot;, &quot;&quot;, 0, args())
+            args(0).Name = &quot;By&quot;
+            args(0).Value = 5
+            oDispatcher.executeDispatch(oDocFrame, &quot;.uno:GoDownSel&quot;, &quot;&quot;, 0, args())
+
+            oRangeAddr = oDoc.getCurrentSelection().getRangeAddress()
+
+            bResult = oRangeAddr.StartColumn = 0 and oRangeAddr.EndColumn = 5 and oRangeAddr.StartRow = 0 and oRangeAddr.EndRow = 5
+
+            LogTestResult( GetDocFilter(gCurrentDocTest or cFltNewDoc)+&quot; &quot;+ cMessageRunMacros, bResult )
+
+            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 cFlt50, frmHyperText or cFltXML
+            GetDocEndings = &quot;html&quot; &apos;Hypertext-Dokument
+        case frmWriter or cFlt50
+            GetDocEndings = &quot;sdw&quot; &apos; Textdokument 5.0
+        case frmCalc or cFlt50
+            GetDocEndings = &quot;sdc&quot; &apos;Tabellendokument 5.0
+        case frmImpress or cFlt50
+            GetDocEndings = &quot;sdd&quot; &apos;PrÕsentation 5.0
+        case frmDraw or cFlt50
+            GetDocEndings = &quot;sda&quot; &apos;Zeichen 5.0
+        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 cFlt50, frmHyperText or cFltXML
+            GetDocFilter = &quot;HTML&quot; &apos; HTML document
+        case frmWriter or cFlt50
+            GetDocFilter = &quot;StarWriter 5.0&quot; &apos; Textdokument 5.0
+        case frmCalc or cFlt50
+            GetDocFilter = &quot;StarCalc 5.0&quot; &apos;Tabellendokument 5.0
+        case frmImpress or cFlt50
+            GetDocFilter = &quot;StarImpress 5.0&quot; &apos;Präsentation 5.0
+        case frmDraw or cFlt50
+            GetDocFilter = &quot;StarDraw 5.0&quot; &apos;Zeichen 5.0
+        case frmMath or cFlt50
+            GetDocFilter = &quot;StarMath 5.0&quot; &apos;Formel 5.0
+
+        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 cDocOpen50
+            GetErrorMessageOnAction = cMessageOpen50Doc
+        case cDocMacros
+            GetErrorMessageOnAction = cMessageRunMacros
+        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 cFlt50)) or (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>
diff --git a/smoketest/data/Test_DB.xml b/smoketest/data/Test_DB.xml
new file mode 100644
index 0000000..52ea5d9
--- /dev/null
+++ b/smoketest/data/Test_DB.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* 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.
+*
+**********************************************************************-->
+<!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_DB" script:language="StarBasic">REM  *****  Database Test  *****
+
+const cMessageDatabaseService = &quot;Database Service&quot;
+const cMessageDatabaseOpen = &quot;Open Database&quot;
+const cMessageDatabaseInsert = &quot;Insert record into Database&quot;
+const cMessageDatabaseDelete = &quot;Delete record from Database&quot;
+const cMessageDatabaseSeek = &quot;Read other record from Database&quot;
+const cMessageDatabaseClose = &quot;Close Database&quot;
+
+Sub TestDB
+
+    Dim oDBConnection as Object, oDataSource as Object, oDBContext as Object
+    Dim sDBName as String, sTable as String, sCurrentMessage as String
+    Dim nRowCount as Integer
+    Dim bResult as Boolean
+    Const sTestString = &quot;Automatical Test&quot;
+
+    On Local Error GoTo DBERROR
+
+    gCurrentTestCase = cLogfileFailed
+    LocalTestLog% = OpenLogDat (GetLogFileName(gCurrentDocTest))
+
+    gCurrentTestCase = cDBService
+    sCurrentMessage = cMessageDatabaseService + &quot; &quot; + cUnoDatabaseContext
+
+    oDBContext = CreateUnoService(cUnoDatabaseContext)
+    sDBName=&quot;Bibliography&quot; &apos;Names of Databases
+
+    gCurrentTestCase = cDBOpen
+    sCurrentMessage = cMessageDatabaseOpen
+
+    oDataSource = oDBContext.GetByName(sDBName)
+    sTable=oDataSource.Tables.ElementNames(0)
+    oDBConnection = oDBContext.GetByName(sDBName).GetConnection(&quot;&quot;,&quot;&quot;)
+
+    LogTestResult( &quot;Database &quot;+ cMessageDatabaseOpen, not IsNull (oDBConnection) )
+    if (IsNull(oDBConnection)) then
+       Close #LocalTestLog%
+        LocalTestLog = 0
+        Exit Sub
+    End If
+
+    &apos; Database is open now
+
+    gCurrentTestCase = cDBService
+    sCurrentMessage = cMessageDatabaseService + &quot; &quot; + cUnoRowSet
+    oRowSet = createUnoService(cUnoRowSet)
+
+    if (IsNull(oRowSet)) then
+        LogTestResult( &quot;Database &quot;+ cMessageDatabaseService + &quot; &quot; + cUnoRowSet, not IsNull (oRowSet) )
+        Exit Sub
+    else
+        LogTestResult( &quot;Database &quot;+ cMessageDatabaseService, TRUE )
+    End If
+
+    gCurrentTestCase = cDBInsert
+    sCurrentMessage = cMessageDatabaseInsert
+
+    oRowSet.ActiveConnection = oDBConnection
+
+    oRowSet.CommandType = com.sun.star.sdb.CommandType.COMMAND
+    oRowSet.Command = &quot;SELECT * FROM &quot; + sTable
+    oRowSet.execute()
+
+    oRowSet.moveToInsertRow
+    oRowSet.updateString(5, sTestString)
+
+    oRowSet.insertRow()
+    nRowCount=oRowSet.RowCount
+
+    oRowSet.moveToCurrentRow()
+
+    bResult = (oRowSet.getString(5) = sTestString)
+    LogTestResult( &quot;Database &quot;+ cMessageDatabaseInsert, bResult )
+
+    &apos;delete only if insert passed
+
+    if (bResult) Then
+        gCurrentTestCase = cDBDelete
+        sCurrentMessage = cMessageDatabaseDelete
+        oRowSet.deleteRow()
+        bResult = (nRowCount - oRowSet.RowCount = 0)
+        if ( bResult ) Then
+            oRowSet.next()
+            bResult = (nRowCount - oRowSet.RowCount = 1)
+        End If
+        LogTestResult( &quot;Database &quot;+ cMessageDatabaseDelete, bResult )
+    End If
+
+    &apos; read other record
+
+    gCurrentTestCase = cDBSeek
+    sCurrentMessage = cMessageDatabaseSeek
+    oRowSet.first()
+    bResult = not (oRowSet.getString(5) = sTestString)
+    LogTestResult( &quot;Database &quot;+ cMessageDatabaseSeek, bResult )
+
+    gCurrentTestCase = cDBClose
+    sCurrentMessage = cMessageDatabaseClose
+    oDBConnection.Dispose()
+    LogTestResult( &quot;Database &quot;+ cMessageDatabaseClose, True )
+
+    Print #LocalTestLog, &quot;---&quot;
+    Close #LocalTestLog%
+    LocalTestLog = 0
+    Exit Sub &apos; Without error
+
+    DBERROR:
+    If ( gCurrentTestCase = cLogfileFailed ) then
+        LogTestResult( &quot; &quot;, False )
+        Exit Sub
+    else
+        LogTestResult( &quot;Database &quot;+ sCurrentMessage, FALSE )
+        Close #LocalTestLog%
+        LocalTestLog = 0
+    End If
+    Exit Sub &apos; With error
+End Sub
+</script:module>
diff --git a/smoketest/data/Test_Ext.xml b/smoketest/data/Test_Ext.xml
new file mode 100644
index 0000000..ac39f48
--- /dev/null
+++ b/smoketest/data/Test_Ext.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* 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.
+*
+**********************************************************************-->
+<!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_Ext" script:language="StarBasic">REM  *****  BASIC  *****
+
+const cMessageExtensionService = &quot;Extension Service&quot;
+const cMessageExtensionInstall = &quot;Install Extension&quot;
+const cMessageExtensionUninstall = &quot;Uninstall Extension&quot;
+
+Sub TestExtensions
+    Dim oTestExtension as Object, obj_null as Object
+    Dim sCurrentMessage as String
+    Dim bResult as Boolean
+    Dim sImplementationNameString as String
+    sImplementationNameString = cUnoSmoketestTestExtension + &quot;$_TestExtension&quot;
+
+    On Local Error GoTo EXTERROR
+
+    gCurrentTestCase = cLogfileFailed
+    LocalTestLog% = OpenLogDat (GetLogFileName(gCurrentDocTest))
+
+    sCurrentMessage = cMessageExtensionService
+    gCurrentTestCase = cEXTService
+
+    &apos;Create an implementation of com.sun.star.ucb.XCommandEnvironment which is needed for
+    &apos;adding the extension. The implementation is in
+    &apos;javaunohelper/com/sun/star/comp/juhtest/SmoketestCommandEnvironment.java and the code is in juh.jar
+    cmdEnv = createUnoService(cUnoSmoketestCommandEnvironment)
+
+    &apos;Create the component context and then get the singleton ExtensionManager
+    &apos;A singleton cannot be created with createUnoService
+    ctx = getDefaultContext
+    ext_mgr = ctx.getValueByName(&quot;/singletons/&quot; + cExtensionManager)
+
+    LogTestResult( &quot;Extension &quot;+ cMessageExtensionService, not IsNull (ext_mgr) )
+    if (IsNull(ext_mgr)) then
+        Close #LocalTestLog%
+        LocalTestLog = 0
+        Exit Sub
+    End If
+
+    sCurrentMessage = cMessageExtensionInstall
+    gCurrentTestCase = cEXTInstall
+
+    &apos;Add the extension. We must provide a file URL here.
+    &apos;By passing &quot;user&quot; we determine that the actions we perform on
+    &apos;XExtensionManager only affect the user installation. To modify the share installation one would pass &quot;share&quot;.
+
+    Dim props() as Object
+    ext_mgr.addExtension(sExtensionURL + cExtensionFileName, props, &quot;user&quot;, obj_null, cmdEnv)
+
+    &apos;Check if the extension has been added by creating a service which is contained in the extension.
+    oTestExtension = createUnoService(cUnoSmoketestTestExtension)
+    bResult = (oTestExtension.getImplementationName = sImplementationNameString)
+    LogTestResult( &quot;Extension &quot;+ cMessageExtensionInstall, bResult )
+    if (not bResult) then
+        Close #LocalTestLog%
+        LocalTestLog = 0
+        Exit Sub
+    End If
+
+    sCurrentMessage = cMessageExtensionUninstall
+    gCurrentTestCase = cEXTUninstall
+
+    &apos;Remove the package
+    ext_mgr.removeExtension(&quot;org.openoffice.legacy.&quot; + cExtensionFileName, cExtensionFileName, &quot;user&quot;,obj_null, cmdEnv)
+
+    &apos;Try to create the service which is contained in the now removed extension.
+    oTestExtension = createUnoService(cUnoSmoketestTestExtension)
+
+    &apos;The service must not be available anymore. Therefor isNull must return true.
+    LogTestResult( &quot;Extension &quot;+ cMessageExtensionUninstall, IsNull (oTestExtension) )
+
+    Print #LocalTestLog, &quot;---&quot;
+    Close #LocalTestLog%
+    LocalTestLog = 0
+    Exit Sub &apos; Without error
+
+    EXTERROR:
+    If ( gCurrentTestCase = cLogfileFailed ) then
+        LogTestResult( &quot; &quot;, False )
+        Exit Sub
+    else
+        LogTestResult( &quot;Extension &quot;+ sCurrentMessage, False )
+        Close #LocalTestLog%
+        LocalTestLog = 0
+    End If
+    Exit Sub &apos; With error
+
+End Sub
+</script:module>
diff --git a/smoketest/data/content.xml b/smoketest/data/content.xml
new file mode 100644
index 0000000..60559af
--- /dev/null
+++ b/smoketest/data/content.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* 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.
+*
+**********************************************************************-->
+<office:document-content xmlns:office="http://openoffice.org/2000/office" xmlns:style="http://openoffice.org/2000/style" xmlns:text="http://openoffice.org/2000/text" xmlns:table="http://openoffice.org/2000/table" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="http://openoffice.org/2000/meta" xmlns:number="http://openoffice.org/2000/datastyle" xmlns:svg="http://www.w3.org/2000/svg" xmlns:chart="http://openoffice.org/2000/chart" xmlns:dr3d="http://openoffice.org/2000/dr3d" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="http://openoffice.org/2000/form" xmlns:script="http://openoffice.org/2000/script" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xform
 s" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" office:version="1.2" grddl:transformation="http://docs.oasis-open.org/office/1.2/xslt/odf2rdf.xsl" office:class="text">
+  <office:script/>
+  <office:font-decls>

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list